v0.21.0
Minutes v0.21.0
The Recall panel grows up, summarization goes fully on-device, and Live mode stops losing your sessions.
🎙️ Native chat panel for Recall (replaces the terminal by default)
Discuss-with-Agent is now a real chat surface, not a raw terminal — for everyone, not just developers.
- Streaming replies with a "thinking" indicator the instant you hit enter — no more dead air on a cold start.
- Live grounding narration — watch the agent read your memory in real time ("searching your meetings…", "checking commitments…") via a read-only scope on the Minutes MCP server.
- Markdown rendering (bold, lists, inline + fenced code), rendered safely as the response streams.
- Coach-mode UX: scroll-anchoring (scroll up to read a scripted paragraph aloud without getting yanked to the latest message — a "↓ new messages" pill appears instead), a compact header on small/teleprompter windows, and a clearly-labeled Terminal / Chat mode toggle.
- The terminal is preserved as an opt-in Developer mode (Settings, or the header toggle).
🧠 On-device summarization via Apple Foundation Models (macOS 26+)
When available, Minutes now summarizes entirely on your Mac through Apple Foundation Models — no API key, nothing uploaded. Preferred automatically by engine = "auto" on supported machines.
💾 Live sessions are no longer ephemeral
Previously a minutes live session sat in a fixed slot that the next Live overwrote, and never became a real meeting. Now, on stop, Minutes preserves the audio/transcript out of the overwrite slot and (by default) promotes it into a diarized, summarized meeting in ~/meetings — just like Record. Configurable via [live_transcript] promote_on_stop (process / preserve / off).
🔒 Consent & governance
Agent-layer sensitivity enforcement (consent Phase 2 Wave 2): restricted meetings stay out of search, graph, and anything an agent assembles.
🛠️ Fixes
- Screen-context screenshots retained and delivered to agent summarizers, coverage-bounded to the transcript actually sent.
- Title generator no longer echoes its own prompt into filenames.
- Multi-person strings ("Gert and Liam") no longer fuse into one person entity.
- Screen-capture thread stops cleanly on every record-loop exit;
build.sh --installcan't hollow out the app on an App-Management denial.
🤖 Release prepared with Claude Code
🙏 Contributors
Huge thanks to the contributors who made this release:
- @maosuarez — designed and built the native chat panel for Recall (#404), the foundation of this release's headline feature. The streaming, grounding narration, markdown, and coach-mode UX all build on his work.
- @rymalia — screen-context reliability: screenshot retention + agent delivery with coverage-bounded sampling (#421), and a fix to stop the screen-capture thread cleanly on every record-loop exit (#427).
New contributors are always welcome — see CONTRIBUTING.md.