fix(desktop): the voice and call windows are sent no planning conversation, as they are sent no planning work

Merged
DA
6d ago
+63-8

Found by the PRIVACY.md worker: #2437 added planning.conversation (the planner's raw journals, run_on_mac and repository command output included) to the planning view, but voiceWindowState (apps/desktop/src/main/app-state.ts) strips only planning.work. So the new key reached the hidden voice window and the call window. AGENTS.md's Never rule keeps that out of the voice window, and that's why work was stripped in the first place.

What

  • voiceWindowState now strips conversation as well as work. Its doc says why: neither window draws them, and both carry command output from the repository and the Mac.

  • First read too (Devin's finding): a voice or call window's first read of the document (the bridge's requestAppState, answered by snapshotFor) was unfiltered, for work as well. The bridge host now answers it through windowAppState, which applies voiceWindowState for a voice or call sender and leaves a panel's whole.

Other new state from B/C: checked. planning.conversation is the only state key #2437 or #2453 added. The two new acts, PLANNING_CONVERSATION_EARLIER and PLANNING_MESSAGES, already refuseUnlessPanel (planning-acts.ts), so the voice window can't ask for the conversation or a worker's session either.

Tests

  • apps/desktop/src/main/app-state.test.ts: the voice-window test, through voiceWindowState's public export, now also holds a conversation carrying a run_on_mac call's output. It asserts the sent state has neither work nor conversation, and no trace of that output anywhere. It fails without the change. It also asserts the first-read answer (windowAppState) for both windows, and that a panel's read keeps the conversation. The fixture is synthetic (git status on a made-up branch).
  • ./scripts/check.sh exits 0.

Mac UI

CI could not verify the Mac, and ./scripts/verify.sh was not run (LUKE-159). Nothing visible changes: the voice and call windows never drew either key.

šŸ¤– Generated with Claude Code


Open workspace in Conductor


Devin Review


Summary by cubic

Prevents the hidden voice and call windows from receiving planning.work and planning.conversation, which can contain command output. Their initial state read now uses the same filtering, while panels still receive the full planning state.

  • Tests verify both windows exclude the data and panels retain it.