Perchnote raven, perched on a meeting notePerchnote

What changed.

Release notes for every build, newest first. All releases on GitHub ↗

Perchnote 0.8.0

v0.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 .perchnote archive (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

1. Download Perchnote_0.8.0_aarch64.dmg below.

2. Open it and drag Perchnote to /Applications.

3. First launch: right-click the app in /ApplicationsOpen, then confirm the Gatekeeper prompt. The build is unsigned (signing/notarization is on the roadmap).

One-shot alternative:

```sh

xattr -dr com.apple.quarantine /Applications/Perchnote.app

```

Verify the download

```sh

shasum -a 256 -c Perchnote_0.8.0_aarch64.dmg.sha256

```

Expected: a9d91797acf9dbc9c6d41e78678a99c7e766c1c452bcf40468efc6128d65bc4b

📋 Requirements

macOS 14+, Apple silicon (aarch64). Intel users should build from source.

---

Issues: <https://github.com/GurtekS/perchnote/issues>

Perchnote 0.1.2

v0.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

1. Download Perchnote_0.1.2_aarch64.dmg below.

2. Open the DMG and drag Perchnote to /Applications.

3. First launch: right-click the app in /ApplicationsOpen, then confirm the Gatekeeper warning. The build is still unsigned (signing/notarization is roadmap).

Prefer a one-shot fix:

```sh

xattr -dr com.apple.quarantine /Applications/Perchnote.app

```

Verify the download

```sh

shasum -a 256 -c Perchnote_0.1.2_aarch64.dmg.sha256

```

Expected: 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.

---

Issues: <https://github.com/GurtekS/perchnote/issues>