Releases: matthartman/ghost-pepper
Release list
Ghost Pepper v2.4.2 🌶️
Hotfix release for Keychain prompt behavior.\n\n- Avoid eager Keychain reads during onboarding/startup\n- Keep Google Calendar connection state without forcing token access just to render UI\n- Defer optional integration secrets until the relevant feature is used
Ghost Pepper v2.4.1
Release v2.4.1 with onboarding model readiness fixes, Granola API-only import updates, privacy preflight fixes, and sanitized private-name test fixtures.
Ghost Pepper v2.4.0 🌶️
What's new in 2.4.0
Agentic meeting Q&A — ask questions across all your meetings; the agent greps/reads transcripts with an Anthropic backend, multi-turn conversations, inline model picker, and live cost display.
Indexing & dossiers — build People/topic indexes from your meetings; dossiers render as markdown, open as tabs, support wikilinks (Cmd+click opens in a new tab), and track generation provenance. Two-step "Apply to dossier" merges Q&A findings.
Cmd+K command palette — fuzzy search across people, meetings, and notes with arrow-key navigation.
Calendar — Today's events list, multi-calendar support, offline cache, and auto-refresh after a recording stops.
Other — usage report, model buttons in the sidebar, Granola auto-import, Cmd+N for a new personal note, and assorted UI polish.
Auto-updates roll out via Sparkle within 24 hours. Notarized by Apple.
Ghost Pepper v2.3.0 🌶️
What's new in v2.3.0
Meeting transcription now enabled by default
- Existing users get meeting transcription auto-enabled on update
- "What's New" dialog announces the feature on first launch
Detect meeting name & attendees
- Detect button grabs meeting name from Zoom/Teams window title + OCR attendee names from video tiles
- Prioritizes native Zoom over browser windows
- Strips pronouns (she/her, they/them) from names, filters Zoom internal windows (ZM_*)
- Retries at 3s, 15s, 30s, 60s to catch late joiners
- Attendee names shown as chips
Summary improvements
- Inline prompt editor — click "Customize" on the Summary tab to edit the prompt and pick a model before generating
- Topic-based summary prompt inspired by Granola's style
Speaker identity (by @obra)
- Voice recognition labels speakers across recordings
- Recognized voice store persists speaker profiles locally
- Speaker-tagged transcription lab reruns
- Diarization fixes and fallbacks
UI improvements
- Resizable sidebar (drag divider)
- Sidebar open by default
- "Imported from Granola" badge + green icon for imported files
- No misleading "Others" speaker badge on Granola transcripts
- "Update Available — Install Now" shown in menu bar dropdown
Bug fixes
Ghost Pepper v2.2.0 🌶️
What's new in v2.2.0
Speaker identity (by @obra)
- Voice recognition labels speakers across recordings
- Recognized voice store persists speaker profiles locally
- Speaker identity resolver matches voices to known profiles
Meeting improvements
- Detect button — click to grab meeting name + attendee names from Zoom/Teams via OCR
- Auto-detects meeting app even for manual recordings (scans Zoom, Teams, FaceTime, Webex, Slack)
- Attendee OCR retries at 3s, 15s, 30s, 60s to catch late joiners
- Zoom meeting auto-stop when meeting window closes
- Meeting window floats above other windows while recording (toggle in Settings)
- Resizable sidebar — drag the divider to see full meeting names
- Sidebar open by default
Summary & notes
- Inline summary prompt editor — click "Customize" on Summary tab to edit the prompt and pick a model before generating
- Topic-based summary prompt (Granola-style headings, user notes as emphasis guide)
Granola import
- "Imported from Granola" badge on imported files
- Green import icon in sidebar for Granola files
- No misleading "Others" speaker badge on Granola transcripts
Context Bundler
- Pepper Chat is now opt-in (off by default unless API key exists) — by @obra
- Fixed bubble dismissing before transcription completed
- Fixed mic not targeted on context bundler recordings
Bug fixes
- Aggregate audio device support — targets device directly, no longer changes system default mic (#60)
- Apple Music / YouTube no longer triggered on recording stop (#56, #57)
- Streamed transcription reduces dictation latency — by @obra
- Cleanup prompt passthrough strengthened — by @obra
- Audio engine kept alive between recordings for faster startup — by @obra
Privacy
- Privacy audit (PRIVACY_AUDIT.md) + README checklist
- .env added to .gitignore
Ghost Pepper v2.1.2 🌶️
Bug fixes
- Fixed Apple Music / YouTube launching on recording stop — Ghost Pepper no longer sends a media "play" command when recording ends. Previously this could trigger Apple Music to open or resume a YouTube tab in the background (#56, #57)
- Aggregate audio device support — Mic selection no longer changes the system-wide default. Devices are targeted directly on the audio unit. Added mono downmix for aggregate devices with >2 channels (#60)
- Granola import improvements — Full API pagination, summary_markdown support, sidebar search, sync icon
- Meeting file parsing — Summaries, chapters, and Granola-format transcripts now display correctly
- Improved summary prompt — Topic-based headings, incorporates user notes
- Privacy audit — Added PRIVACY_AUDIT.md and README privacy checklist
Ghost Pepper v2.1.1 🌶️
What's new
Granola meeting import
- Import meeting notes, summaries, and transcripts from Granola's local cache and API
- Sync icon in the sidebar for re-importing
- Full API pagination support (fetches all notes, not just first 10)
Meeting window improvements
- Sidebar search to filter meetings by name
- Summary and Chapters from Granola files now display in the Summary tab
- Granola-format transcripts (plain text) now display in the Transcript tab
- Improved summary prompt — topic-based headings, incorporates user notes
Bug fixes
- Aggregate audio device support — no longer changes the system-wide default mic; targets devices directly on the audio unit. Manual mono downmix for >2 channel devices (#60)
- Apple Music / YouTube no longer triggered — removed auto-resume media command that was launching apps on recording stop (#56, #57)
- Recording history off by default — privacy-first; opt in via Settings (#65)
Privacy audit
- Added PRIVACY_AUDIT.md — verifiable proof that all core features run 100% locally
- README now includes privacy checklist with "verify it yourself" instructions
Ghost Pepper v2.1.0 🌶️
What's New
Meeting Transcription (Experimental)
- Record and transcribe meetings locally — dual-stream audio captures both your mic and system audio
- Auto-detects Zoom, Teams, FaceTime, Google Meet, YouTube, Loom, Twitch, Vimeo
- Notion-style transcript window with Notes, Transcript, and Summary tabs
- VS Code/Obsidian-style tabbed interface — open multiple meetings side by side
- AI-generated meeting summaries using local LLM with editable prompt
- Quick Notes — start a new note anytime from the sidebar
- Markdown files saved to a user-chosen directory organized by date
- Cmd+F search with highlight across all tabs
- OCR-based attendee capture and auto-title from meeting window
- Smart Obsidian integration — auto-creates vault if installed
New Speech Model
- Qwen3-ASR 0.6B — 50+ language support, macOS 15+ (thanks @15ky3!)
Recording
- Auto-pauses media (Spotify, Apple Music, podcasts) when recording — resumes after
- Fixed Bluetooth mic crashes — engine recreated per session (thanks @15ky3!)
- "No sound detected" overlay now shows mic settings hint (clickable)
- Mic switching in Settings no longer requires app restart
Cleanup & Accuracy
- Fixed LLM treating speech as chat prompts instead of cleaning transcription (#42)
- Added eval test suite across all model sizes to catch regressions
UI & Quality of Life
- Paste into Zed editor via menu bar duck-typing (thanks @mvanhorn!)
- Search transcription history (thanks @mvanhorn!)
- Delete individual recordings + clear all history
- Model delete shows spinner + cloud download icon to re-download
- Pepper Chat close button and double-click dismiss
- Gatekeeper workaround instructions in README
Full changelog: v2.0.1...v2.1.0
Ghost Pepper v2.0.1 🌶️
Bug fix
- Fix microphone permission prompt not appearing — The release signing script was stripping the
com.apple.security.device.audio-inputentitlement, preventing macOS from showing the microphone permission popup. Ghost Pepper now appears correctly in Privacy & Security > Microphone. (Fixes #21, thanks @ttulttul for the fix and @pyrex41 for the diagnosis)
Signed, notarized, and stapled with Developer ID.
Ghost Pepper v2.0.0 🌶️
What's New
Pepper Chat 💬 (Experimental)
- Hold a hotkey, speak a question, get an AI response from a floating ghost pepper on your screen
- Type or talk — text input field for typing messages directly
- Screen context automatically included (OCR of your frontmost window)
- Experimental AI backend via Zo API (requires API key)
- Clippy-style floating pepper character with toggleable speech bubble
Improvements
- Simplified onboarding — shows only default speech + cleanup models
- Download progress for model downloads
- Permission status shown in Settings, auto-opens if missing
- Default cleanup model changed to fastest option (Qwen 3.5 0.8B)
- Paste fallback for apps without editable text fields
Signed & Notarized
- Now fully signed with Developer ID and Apple notarized
- No more "untrusted developer" warnings on install
Download the latest release — macOS 14.0+, Apple Silicon (M1+)