From 87908d982f3cc9cfa48466c7bbc3116ecaf650c1 Mon Sep 17 00:00:00 2001 From: lucaronin Date: Tue, 28 Apr 2026 23:56:08 +0200 Subject: [PATCH] fix: allow guidance open path --- src-tauri/capabilities/default.json | 3 ++- src-tauri/src/claude_cli.rs | 8 +++----- src-tauri/src/commands/ai.rs | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index f51649bf..8be532e8 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -17,6 +17,7 @@ "dialog:default", "updater:default", "process:default", - "opener:default" + "opener:default", + "opener:allow-open-path" ] } diff --git a/src-tauri/src/claude_cli.rs b/src-tauri/src/claude_cli.rs index 6e1f685b..2dfca348 100644 --- a/src-tauri/src/claude_cli.rs +++ b/src-tauri/src/claude_cli.rs @@ -590,11 +590,9 @@ fn dispatch_assistant_content_block( F: FnMut(ClaudeStreamEvent), { match block["type"].as_str() { - Some("text") => { - if emit_text { - if let Some(text) = block["text"].as_str() { - emit_text_delta(text, state, emit); - } + Some("text") if emit_text => { + if let Some(text) = block["text"].as_str() { + emit_text_delta(text, state, emit); } } Some("tool_use") => { diff --git a/src-tauri/src/commands/ai.rs b/src-tauri/src/commands/ai.rs index 9c4ccbd3..319ca51f 100644 --- a/src-tauri/src/commands/ai.rs +++ b/src-tauri/src/commands/ai.rs @@ -145,6 +145,8 @@ pub async fn stream_ai_agent( mod tests { use super::*; use crate::vault::AiGuidanceFileState; + use serde_json::Value; + use std::{fs, path::Path}; #[test] fn guidance_commands_report_and_restore_vault_guidance_files() { @@ -167,4 +169,24 @@ mod tests { assert!(dir.path().join("CLAUDE.md").exists()); assert!(dir.path().join("GEMINI.md").exists()); } + + #[test] + fn desktop_capability_allows_opening_restored_guidance_files() { + let capability_path = Path::new(env!("CARGO_MANIFEST_DIR")) + .join("capabilities") + .join("default.json"); + let capability_json = fs::read_to_string(capability_path).unwrap(); + let capability: Value = serde_json::from_str(&capability_json).unwrap(); + let permissions = capability + .get("permissions") + .and_then(Value::as_array) + .unwrap(); + + assert!( + permissions + .iter() + .any(|permission| permission.as_str() == Some("opener:allow-open-path")), + "desktop capabilities must allow opener open_path so restored guidance files can be opened" + ); + } }