Releases: GurtekS/perchnote
Release list
Perchnote 0.8.0
The first downloadable release since 0.1.2 — and a big one. Perchnote grew from a basic recorder into a full local-first meeting workspace. Everything still runs on your Mac: recordings, transcripts, notes, and search are on-device, AI is optional and pluggable, and credentials live in the macOS Keychain. No accounts, no telemetry, no cloud.
🎙️ Recording & transcription
- Whisper runs in-process — no
brew install, model loads once per session, pause-aligned chunking for low-latency live transcript. - Accuracy pass on stop — the whole recording is quietly re-decoded with full context and the transcript is upgraded in place (your edits always win).
- Neural diarization that splits a segment at the word boundary when two people trade quick lines, so fast back-and-forth keeps each speaker instead of collapsing onto one.
- Speakers that name themselves from your saved voice profiles, strictly on-device, with per-speaker undo.
- Stereo capture (you on the left channel, the room on the right), a voice-activity gate that filters hallucinations, sticky correction rules, and drop-in audio file import.
🤖 AI notes, on your terms
- Instant recap — notes are waiting the moment a recording stops (toggleable).
- Verifiable action items and bullets with
[m:ss]citations that jump to the transcript and play the audio. - Recipes — saved prompts that can run across recent meetings and auto-run for a series.
- Enhance receipts — every AI note records which provider/model wrote it and when, with a staleness badge and one-click re-enhance if the transcript changes.
- Ask AI mid-meeting, retrieval-grounded answers, and a choice of provider: Anthropic, local Ollama, or Apple Intelligence.
🔎 Search & recall
- Semantic recall for everyone — "means the same thing" search now works out of the box using Apple's on-device model (macOS 14+); Ollama remains an explicit option.
- Per-segment full-text search with snippets and playback, filters (
speaker:,folder:,before:/after:), and a command palette (⌘K) that searches everything.
✅ Tasks & follow-through
- A Tasks rollup across meetings with due-date buckets, snooze, stale-item triage, a week-in-review, and bulk actions.
- Apple Reminders round-trip (completions sync back) and Things hand-off.
🗂️ Your data, portable
- Full backup/restore to a verifiable
.perchnotearchive (atomic, checksum-verified). - Markdown mirror to a folder you choose, with configurable layouts and frontmatter — and it refuses to clobber a file you edited outside the app.
- A local MCP server so tools like Claude Desktop can read your meetings (read-only, on-device).
🎨 Polish
- A full visual refresh end-to-end (frosted surfaces, real depth, accessible contrast, one focus ring), a light theme, keyboard- and VoiceOver-friendly throughout.
- Untitled meetings name themselves from the transcript, empty mis-click recordings discard themselves, the All-Meetings table has resizable columns, and the menu-bar tray lists recent meetings.
…plus an Insights view, calendar week view, deep links/Shortcuts, and a long tail of reliability and corner-case fixes.
📥 Install
-
Download
Perchnote_0.8.0_aarch64.dmgbelow. -
Open it and drag Perchnote to
/Applications. -
First launch: right-click the app in
/Applications→ Open, then confirm the Gatekeeper prompt. The build is unsigned (signing/notarization is on the roadmap).One-shot alternative:
xattr -dr com.apple.quarantine /Applications/Perchnote.app
Verify the download
shasum -a 256 -c Perchnote_0.8.0_aarch64.dmg.sha256Expected: a9d91797acf9dbc9c6d41e78678a99c7e766c1c452bcf40468efc6128d65bc4b
📋 Requirements
macOS 14+, Apple silicon (aarch64). Intel users should build from source.
Perchnote 0.1.2
First downloadable release. v0.1.0 and v0.1.1 were withdrawn — both shipped builds with data-leakage findings that this release closes.
🔒 What was fixed (vs. the withdrawn v0.1.0 / v0.1.1)
🔴 Transcript text no longer logged
The whisper transcription code was logging every transcribed segment in full at default info! level — meeting transcripts ended up in stdout / Console.app / log stream, visible to any local tool with log-reading access and capturable in screen recordings or crash dumps. Now only segment length is logged.
🟡 OAuth flows use state + PKCE
Google and Microsoft OAuth flows now generate a fresh state (RFC 6749 §10.12) and S256 code_challenge (RFC 7636) per attempt. The callback verifies state and the token exchange sends the code_verifier. Closes a localhost OAuth-CSRF window that could have logged a user into an attacker's calendar (useful for phishing via planted invites).
🟡 Meeting titles + recording paths no longer logged
Notification-sent log dropped meeting.title (often contains client names / project codes). WAV-repair log dropped the recording path.
🟡 Asset protocol scope narrowed
tauri.conf.json previously had $APPDATA/** exposed via asset://, which would have reached the SQLite database (notes, transcripts). Now scoped to $APPDATA/recordings/** only — matches actual frontend use (the audio player and transcript drawer only ever request recording paths).
🟢 Build paths stripped from binary
Prior builds embedded /Users/admin/.cargo/registry/... strings via Rust's file!() macro in dependency panic messages. The Cargo config now sets --remap-path-prefix=/Users/admin=/build and strip = "symbols" on the release profile. The shipped binary contains no host-machine paths.
🧪 Testing
170 Rust tests pass, including 9 new tests on the pkce module (uniqueness, code_challenge = base64url(SHA256(code_verifier)), callback parsing with URL decoding, rejection of missing/error responses). 173 frontend tests pass.
📥 Install
-
Download
Perchnote_0.1.2_aarch64.dmgbelow. -
Open the DMG and drag Perchnote to
/Applications. -
First launch: right-click the app in
/Applications→ Open, then confirm the Gatekeeper warning. The build is still unsigned (signing/notarization is roadmap).Prefer a one-shot fix:
xattr -dr com.apple.quarantine /Applications/Perchnote.app
Verify the download
shasum -a 256 -c Perchnote_0.1.2_aarch64.dmg.sha256Expected: 511d08194f00eff4f1eede87349c817a7da05cb9e9c1a2951a7d6335013a6e8a
⬆️ If you downloaded v0.1.0 or v0.1.1 before they were withdrawn
Drag the new app over the old one in /Applications. Your OAuth tokens, recordings, transcripts, notes, and Keychain entries are untouched — patches are backwards-compatible. No re-auth required (refresh tokens still work; PKCE/state only apply to new OAuth flows).
📋 Requirements
macOS 14+, Apple silicon (aarch64). Intel users should build from source.