Skip to content

Commit 055709d

Browse files
chaitanyagiriclaude
andcommitted
docs(release): v0.3.2 notes -- Realtime Michael + voice message access
Rewrites RELEASE.md from the stale v0.3.1 body to v0.3.2 (headline "Realtime Michael"), fixes version-pinned download/source links (0.3.0 -> 0.3.2, /releases/latest/download/), and adds the voice-message-access feature to CHANGELOG [0.3.2]. Drafted by the hive (Jim). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014GnThbJQvKg1FEdzCcWMcp
1 parent a35bc40 commit 055709d

2 files changed

Lines changed: 75 additions & 70 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ metadata**.
6363
- **Conversational read-layer.** The voice read tools were reworked to actually answer hive
6464
questions: `get_memory` no longer dead-ends, and new agent/board tools plus an expanded persona let
6565
Michael talk through roster, tasks, and floor state naturally.
66+
- **Voice read-layer over hive messages (read/brief-only).** Realtime Michael can now read message
67+
*content*, not just metadata: a `get_messages` tool returns a **full message by id, one mailbox, or
68+
the latest across the floor** to brief the operator. **All redaction is main-side** —
69+
`voiceMessages()` runs every `subject`/`body` through `redactSecrets()` before the result leaves
70+
the main process, so the renderer/voice layer only ever receives already-redacted bodies (no
71+
provider / Slack / GitHub / AWS / Google key, JWT, PEM private-key block, or `Bearer` token can
72+
leak) and holds **zero** redaction policy. Read-only: it adds no write/mutate path — voice writes
73+
still go through the separate confirm-gated action spine (`src/main/hive.ts` `voiceMessages` +
74+
`redactSecrets`, `src/renderer/src/realtime/{tools.ts,VOICE-MESSAGE-ACCESS.md}`,
75+
`test/voice-messages.test.cjs`).
6676
- **Talk reachable from any fullscreen terminal.** The Talk toggle is no longer Michael-only chrome —
6777
it's reachable in any fullscreen terminal view (the toggle is global/session state, so it's correct
6878
everywhere), while the per-session cost HUD stays Michael-only (`FullscreenTerminal.tsx`).

‎RELEASE.md‎

Lines changed: 65 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Munder Difflin v0.3.1
1+
# Munder Difflin v0.3.2
22

33
**A local hive of Claude Code, Antigravity & Codex agents that run themselves** — messaging,
44
routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-first and open source.
@@ -7,72 +7,65 @@ routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-f
77

88
---
99

10-
## What's new in 0.3.1 — *Three more engines: OpenCode · Crush · pi.dev*
11-
12-
The floor gets three new coding CLIs, each usable as a **worker and as Michael**, with
13-
**bring-your-own keys + local LLMs**:
14-
15-
- **OpenCode** (`opencode`, the TypeScript agent) — wired via a **native plugin** bridge
16-
(`session.idle`): no traffic interception, provider-agnostic, works with local models.
17-
- **Crush** (`crush`, Charmbracelet's Go TUI) — a **proxy** bridge routes its LLM traffic through a
18-
per-agent config so a hookless CLI still reports status and drains mail.
19-
- **pi.dev** (`pi`, the Pi Coding Agent) — a **hooks** bridge: a bundled extension maps Pi's
20-
`pi.on(event)` lifecycle onto the hive, and auto-approves tools only when the floor is in auto mode.
21-
22-
A new **Settings → AI Engines** panel collects per-provider **API keys** (stored *write-only*,
23-
encrypted, never shown again) and **local base-URLs** (Ollama / LM Studio / vLLM) for these engines.
24-
25-
> **Heads-up:** these engines are integrated and selectable as god, but **live end-to-end
26-
> verification with real model calls is pending your BYOK keys / a local LLM** — verify on-device.
27-
> Mail delivery doesn't wait on that: a new **provider-agnostic PTY-quiescence idle fallback** flips
28-
> any silent-but-busy agent back to idle, so the idle wake-nudge drains a god even if a bridge's
29-
> turn-end signal never fires.
30-
31-
Plus two reliability fixes: the **message router now survives system sleep** (it re-arms and drains
32-
the backlog on wake, so god→worker and agent↔agent mail keeps flowing after the laptop's been
33-
closed), and **Codex workers get full filesystem + auto-approval from spawn** (parity with Claude),
34-
so a fresh Codex hive worker can do its protocol housekeeping without a permission prompt.
10+
## What's new in 0.3.2 — *Realtime Michael: talk to the GOD orchestrator*
11+
12+
**Talk to Michael.** The headline is **Realtime Michael** — a low-latency **voice channel to the
13+
GOD orchestrator**, running alongside the async terminal floor. Press **Talk**, and Michael listens,
14+
answers, and *acts* in real time.
15+
16+
- **Talk to the GOD orchestrator by voice.** A new low-latency realtime channel (OpenAI Realtime API
17+
over WebRTC) sits next to the async terminal. A **Talk** toggle — on Michael's card and in any
18+
fullscreen terminal — opens a mic session with echo-cancellation, semantic-VAD turn-taking +
19+
barge-in, and a device picker. Michael runs his own persona and answers in a natural voice, with an
20+
`Off → Connecting → Listening → Responding → Working` state machine live on his card.
21+
- **Reads the hive, acts behind echo-back confirm.** He reads the floor (tasks, board, memory,
22+
agents, activity, cost) and — behind a spoken **echo-back confirmation** for anything destructive —
23+
creates and assigns work, dispatches agents, spawns and kills workers, and steers the floor. Every
24+
voice action is attributed to a distinct **michael-voice** actor that pings the GOD terminal, so a
25+
voice-driven dispatch is auditable; there are hard refusals for killing the GOD agent or targeting
26+
all agents at once.
27+
- **Voice read-layer over hive messages.** Michael can now read message *content*, not just
28+
metadata: a read/brief-only `get_messages` tool surfaces a **full message by id, one mailbox, or
29+
the latest across the floor** — with **all secret redaction done main-side** so the voice layer
30+
only ever receives already-redacted bodies (no provider / Slack / GitHub / AWS / Google key, JWT,
31+
PEM block, or `Bearer` token can leak). Read-only — it adds no new write path.
32+
- **"Respond when done."** Voice-dispatched work reports back on its own: a completion watcher
33+
detects when a dispatched task finishes and **pushes the event into the live session so Michael
34+
speaks it unprompted**; if the session is closed, completions queue to a desktop notification and a
35+
warm-start on reconnect.
36+
- **BYOK, main-only.** Bring-your-own OpenAI key: the key is decrypted **main-only**, minted into
37+
short-lived ephemeral session tokens, and **never reaches the renderer**. A live session cost meter
38+
sits by the Talk toggle, with a hard **spend cap** and an **idle auto-disconnect** so a
39+
forgotten-open mic can't run up a bill.
40+
- **Slack hardening + maintenance.** Proactive Slack posting is **off by default** (no sends without
41+
an explicit channel + thread), auto-compaction becomes a **dedicated maintenance schedule**
42+
decoupled from standups (so editing standups can't silently drop it), and each agent now carries
43+
queryable **per-agent environment metadata** with a working-directory validity guard.
44+
45+
> **Live verification note.** The realtime voice loop is **human-verified end-to-end** on a real
46+
> OpenAI key — connect → mic → Michael answers via the read tools, and the full destructive path
47+
> (spoken echo-back confirm → spawn / kill / dispatch → worker appears on the floor → completion
48+
> spoken back) was exercised live. It requires **your own OpenAI key with Realtime API access**;
49+
> without one the **Talk** button stays visibly disabled with a "needs OpenAI key" cue. The new
50+
> voice-message read-layer's redaction battery is unit-tested in lockstep with the main process; its
51+
> end-to-end voice read is human-gated like all realtime work.
3552
3653
---
3754

38-
## What's new in 0.3.0 — *Selectable engines, integrations, and Slack-spawned workers*
39-
40-
The biggest platform release yet: the floor stops being Claude-shaped. Every hire — and Michael
41-
himself — becomes a **pluggable engine**, each with its own consented skills + MCP catalog. A new
42-
**integrations registry** turns "connect a service" into a write-only, registry-driven Settings
43-
flow. And Michael can now **spawn an ephemeral worker straight from a Slack message**, reply, and
44-
tear it down safely.
45-
46-
- **Selectable agent engines + per-hire capabilities.** A new engine abstraction makes the runtime
47-
behind each agent pluggable — Claude Code, Antigravity, Codex, or a **local provider** (a
48-
claw/qwen backend proxy). Each hire carries its own **manifest** of allowed skills + MCP servers
49-
(default-deny over a shared catalog), with **bundled skills** shipped in the app and a **consent
50-
UI** that surfaces every skill/MCP a hire wants before it can use it. Even **Michael's own
51-
engine** is swappable, with an Onboarding engine picker and a change-engine flow.
52-
- **Integrations registry + loopback secret broker.** A declarative integrations registry plus a
53-
**loopback secret broker**: secrets are **write-only** (set once, never read back into the
54-
renderer) and reached only through the broker. A **registry-driven Settings UI** renders each
55-
integration's config form from the spec, with a first wave of declarative templates.
56-
- **God-triggered ephemeral Slack worker loop.** Michael spawns an isolated worker in response to a
57-
Slack request, the worker posts its reply back into the thread, and it's then **torn down
58-
safely** — with **worktree GC**, **per-worker token caps**, and a teardown gate that never
59-
auto-discards unintegrated work. Live workers show up in a new **Workers tab**.
60-
- **Temporal date-range skills + worker capability catalog.** Date-range skills (today / yesterday /
61-
thisWeek / lastWeek / thisMonth / thisQuarter / thisYear / lastMonth / last7Days / last30Days …)
62-
resolve a named window to concrete ISO dates, and each spawned worker can read a **capability
63-
catalog** of exactly which skills and brokered integrations it has.
64-
- **Provider / Hive picker + Agent Gallery.** A visual `HivePicker` with real provider logos lands
65-
in onboarding and add-agent, *The Hiring Fair* is rebranded to the **Agent Gallery** with **six
66-
off-the-shelf hires**, onboarding is now feature-aware (with a permissions & reliability step),
67-
and the engine-CLI installer runs **visibly** when a binary is missing.
68-
- **Wake-reliability hardening.** Wedged terminals are **auto-revived on wake**, and **missed
69-
schedules are caught up** when the machine wakes instead of being silently skipped.
70-
- **Security:** the `integrations:test` probe path is **confined** so it can't be turned into a
71-
secret-exfiltration or SSRF primitive.
72-
73-
Everything from **v0.2.8** (shareable hires + the gallery) and earlier — Free Flow voice dictation,
74-
the enterprise Knowledge Graph, multi-window "floors", the rich message composer, agent session
75-
resume, and drag-a-file path injection — is included.
55+
## What's new in 0.3.1 — *Three more engines: OpenCode · Crush · pi.dev*
56+
57+
The floor gained three new coding CLIs, each usable as a **worker and as Michael**, with
58+
**bring-your-own keys + local LLMs**: **OpenCode** (`opencode`) via a native-plugin bridge,
59+
**Crush** (`crush`, Charmbracelet's Go TUI) via a per-agent proxy bridge, and **pi.dev** (`pi`) via a
60+
hooks bridge. A new **Settings → AI Engines** panel collects per-provider **API keys** (stored
61+
write-only, encrypted) and **local base-URLs** (Ollama / LM Studio / vLLM). Plus two reliability
62+
fixes: the **message router now survives system sleep** (re-arms and drains the backlog on wake), and
63+
**Codex workers get full filesystem + auto-approval from spawn** (parity with Claude).
64+
65+
Everything from **v0.3.0** (selectable engines, integrations registry + loopback secret broker,
66+
Slack-spawned ephemeral workers, Agent Gallery) and earlier — Free Flow voice dictation, the
67+
enterprise Knowledge Graph, multi-window "floors", the rich message composer, agent session resume,
68+
and drag-a-file path injection — is included.
7669
See the [CHANGELOG](https://github.com/chaitanyagiri/munder-difflin/blob/main/CHANGELOG.md) for full detail.
7770

7871
---
@@ -85,22 +78,22 @@ Apple Silicon and Intel.
8578
### 🍎 macOS
8679
| Build | File |
8780
|---|---|
88-
| Universal (Apple Silicon + Intel) | [`Munder-Difflin-0.3.0-mac-universal.dmg`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0-mac-universal.dmg) |
81+
| Universal (Apple Silicon + Intel) | [`Munder-Difflin-0.3.2-mac-universal.dmg`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2-mac-universal.dmg) |
8982

9083
### 🪟 Windows
9184
| Build | File |
9285
|---|---|
93-
| Installer (x64) — *recommended* | [`Munder-Difflin-0.3.0-win-x64-setup.exe`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0-win-x64-setup.exe) |
94-
| Portable (x64, no install) | [`Munder-Difflin-0.3.0-win-x64-portable.exe`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0-win-x64-portable.exe) |
86+
| Installer (x64) — *recommended* | [`Munder-Difflin-0.3.2-win-x64-setup.exe`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2-win-x64-setup.exe) |
87+
| Portable (x64, no install) | [`Munder-Difflin-0.3.2-win-x64-portable.exe`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2-win-x64-portable.exe) |
9588

9689
### 🐧 Linux
9790
| Build | File |
9891
|---|---|
99-
| AppImage (x86_64) | [`Munder-Difflin-0.3.0-linux-x86_64.AppImage`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0-linux-x86_64.AppImage) |
92+
| AppImage (x86_64) | [`Munder-Difflin-0.3.2-linux-x86_64.AppImage`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2-linux-x86_64.AppImage) |
10093

10194
### 📦 Source
102-
[Source code (zip)](https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.0.zip) ·
103-
[Source code (tar.gz)](https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.0.tar.gz)
95+
[Source code (zip)](https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.2.zip) ·
96+
[Source code (tar.gz)](https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.2.tar.gz)
10497

10598
> **Verify your download:** [`SHA256SUMS.txt`](https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/SHA256SUMS.txt) — then `shasum -a 256 -c SHA256SUMS.txt` (macOS/Linux) or `Get-FileHash` (Windows).
10699
@@ -127,6 +120,7 @@ Apple Silicon and Intel.
127120
- macOS 12+, Windows 10/11, or a modern Linux desktop
128121
- [Claude Code](https://claude.com/claude-code) installed and on your `PATH` (and/or the Antigravity `agy` or OpenAI `codex` CLI for those providers)
129122
- A Claude Code subscription (Munder Difflin drives your existing `claude` CLI — it doesn't replace it)
123+
- For **Realtime Michael** (voice): your own **OpenAI key with Realtime API access** — without it the **Talk** button stays disabled
130124

131125
---
132126

@@ -144,6 +138,7 @@ To produce installers yourself: `npm run dist` (current OS), or `dist:mac` / `di
144138

145139
## What's inside
146140
- **The simulation** — every agent is a real `claude` (or `agy` / `codex` / local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (`node-pty` · `xterm.js` · Pixi.js).
141+
- **Talk to Michael** — a realtime **voice channel to the GOD orchestrator** that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
147142
- **Selectable engines + per-hire capabilities** — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
148143
- **MemPalace** — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
149144
- **GOD orchestrator + hive** — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.

0 commit comments

Comments
 (0)