Skip to content

v0.1.0-alpha — Sprint 1 MVP

Pre-release
Pre-release

Choose a tag to compare

@todddickerson todddickerson released this 08 May 21:37
· 46 commits to main since this release

FunButton v0.1.0 — Sprint 1 MVP (alpha)

Read first: This is an unsigned alpha. macOS Gatekeeper will block first launch.
Workaround: `sudo xattr -cr /Applications/FunButton.app`

What works

  • ✅ Right Option push-to-talk hotkey (rdev listener, modifier-only key support)
  • ✅ Audio capture via cpal (mono, native sample rate, in-memory WAV PCM-16)
  • ✅ Groq Whisper Large v3 Turbo transcription (~300 ms TTFT)
  • ✅ Groq Llama 3.3 70B cleanup (FAST default)
  • Local cleanup via Ollama at `localhost:11434` (auto-detects, falls back to Groq)
  • Code mode — auto-activates in Cursor / VS Code / JetBrains / Vim / Terminal / Xcode. Handles spoken symbols (`open paren`, `arrow`, `equals`) + casing taxonomy (camelCase / snake_case / PascalCase / kebab-case / SCREAMING_SNAKE / dotted)
  • ✅ Frontmost app detection via AppleScript (Cursor, VS Code, JetBrains, Vim, Terminal, Xcode, Mail, Slack, Discord, Messages)
  • ✅ Clipboard + Cmd+V injection with prior-clipboard restore
  • ✅ Menu bar tray with state-aware tooltip (idle / recording / transcribing / cleaning / pasting)
  • ✅ Floating recording pill (transparent, always-on-top)
  • ✅ Settings window (Groq API key, backend toggle, Ollama health check, today's word count)
  • ✅ macOS Mic + Accessibility permission prompts (Info.plist usage descriptions)
  • ✅ GPLv3 desktop core, ~36 MB unsigned .app, ~5 MB DMG

What's not in this drop yet

  • ❌ Bundled local LLM (Sprint 2 — currently you need Ollama installed: `ollama pull qwen2.5:1.5b`)
  • ❌ Email / Slack / Raw modes (only Auto + Code shipped — Sprint 2)
  • ❌ Custom dictionary, transcription history, re-paste shortcut (Sprint 2)
  • ❌ Code signing / notarization (use the xattr bypass below)
  • ❌ Universal binary (arm64-only — Intel Mac users: build from source)
  • ❌ Auto-updater (Sprint 3)
  • ❌ Windows + Linux builds (post-MVP)

Install

  1. Download `FunButton-v0.1.0-macos-arm64.dmg` (or `.zip`).
  2. Open the DMG and drag FunButton.app to `/Applications`.
  3. First launch will be blocked by Gatekeeper. Open Terminal and run:
    ```bash
    sudo xattr -cr /Applications/FunButton.app
    ```
  4. Open FunButton.app. macOS will ask for Microphone and Accessibility permissions — grant both.
  5. Click the FunButton tray icon → Settings → paste your Groq API key (or install Ollama for local mode).
  6. Hold Right Option in any text field. Talk. Release.

Verify your install

  • After grant, hold Right Option for ~2s and say "this is a test of the fun button". Release. The cleaned text should appear at your cursor in ~1.5s.
  • For code mode: open Cursor, hold Right Option, say "open paren camelCase user name comma age close paren arrow user name plus age", release. You should get `(userName, age) => userName + age`.

Local mode (no API key)

```bash
brew install ollama
ollama pull qwen2.5:1.5b
ollama serve # if not already running
```

In FunButton Settings, switch backend to Auto or Local. Recording → cleanup runs entirely on your machine. No internet required after install.

Known issues

  • DMG was built via `hdiutil` (Tauri's `bundle_dmg.sh` AppleScript styler hits a Sequoia timeout). Plain DMG, no styled background. Functional.
  • Right Option uses `rdev::Key::AltGr` mapping. If your keyboard layout differs, the hotkey may not fire — settings UI for remap is Sprint 2.
  • The first time you hold Right Option, macOS may not have triggered the Accessibility prompt yet. Trigger it manually in System Settings → Privacy & Security → Accessibility, then enable FunButton.

Build from source

```bash
git clone https://github.com/todddickerson/funbutton.git
cd funbutton/apps/desktop
npm install
npm run tauri build -- --target aarch64-apple-darwin
```

Sprint 2 (Sun by EOD)

Tone modes (Email / Slack / Raw), custom dictionary, transcription history, bundled local LLM (Qwen 2.5 1.5B Q4 GGUF), re-paste shortcut, polished onboarding.

Roadmap

See PRD.md for the full plan.
The brand wedge is in COMPETITIVE-LANDSCAPE.md: dev-grade, local AI cleanup, lifetime + GPLv3.

🤖 Built autonomously by Claude Opus 4.7 on 2026-05-08.