feat: CLI v2.1.81–v2.1.104 support (#261)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m33s
CI / Lint & Test (push) Successful in 20m29s
CI / Build Linux (push) Successful in 24m9s
CI / Build Windows (cross-compile) (push) Successful in 40m28s

## Summary

Implements support for all Claude Code CLI changes from v2.1.81 through v2.1.104, closing issues #253–#260.

### Changes

- **#253** — New `CwdChanged` hook event: parse and emit `claude:cwd-changed` Tauri event; new `CwdChangedEvent` type
- **#254** — New `FileChanged` hook event: parse and emit `claude:file-changed` Tauri event; new `FileChangedEvent` type
- **#255** — Idle-return prompt: TUI-only feature, not present in `--output-format stream-json` mode — closed as not applicable
- **#256** — New `TaskCreated` and `PermissionDenied` hook events: parse and emit `claude:task-created` / `claude:permission-denied` Tauri events; `PermissionDenied` also triggers `CharacterState::Permission` character animation
- **#257** — Defer permission request: no PreToolUse hook response mechanism in Hikari Desktop — closed as not applicable
- **#258** — `Monitor` tool: added `"Monitor"` to `SEARCH_TOOLS` constant so it maps to `CharacterState::Searching`
- **#259** — `disableSkillShellExecution` setting: wired through `ClaudeStartOptions`, `HikariConfig`, `--settings` JSON, TypeScript interface, and exposed in the Config Sidebar UI
- **#260** — Updated `SUPPORTED_CLI_VERSION` constant from `"2.1.80"` to `"2.1.104"`

All changes pass `check-all.sh` (ESLint → Prettier → svelte-check → Vitest → Clippy → cargo test with llvm-cov).

 This PR was created with help from Hikari~ 🌸

Reviewed-on: #261
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #261.
This commit is contained in:
2026-04-13 12:05:57 -07:00
committed by Naomi Carrigan
parent 542d2eb315
commit 5663b1c09a
8 changed files with 566 additions and 8 deletions
+11
View File
@@ -54,6 +54,9 @@ pub struct ClaudeStartOptions {
#[serde(default)]
pub session_name: Option<String>,
#[serde(default)]
pub disable_skill_shell_execution: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -203,6 +206,11 @@ pub struct HikariConfig {
#[serde(default)]
pub model_overrides: Option<HashMap<String, String>>,
/// Prevents skill scripts from executing shell commands (Claude Code v2.1.91+).
/// Passes `"disableSkillShellExecution": true` via the `--settings` flag.
#[serde(default)]
pub disable_skill_shell_execution: bool,
}
impl Default for HikariConfig {
@@ -254,6 +262,7 @@ impl Default for HikariConfig {
enable_claudeai_mcp_servers: true,
auto_memory_directory: None,
model_overrides: None,
disable_skill_shell_execution: false,
}
}
}
@@ -405,6 +414,7 @@ mod tests {
assert!(config.enable_claudeai_mcp_servers);
assert!(config.auto_memory_directory.is_none());
assert!(config.model_overrides.is_none());
assert!(!config.disable_skill_shell_execution);
}
#[test]
@@ -459,6 +469,7 @@ mod tests {
"claude-opus-4-6".to_string(),
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-opus-4-6-v1".to_string(),
)])),
disable_skill_shell_execution: true,
};
let json = serde_json::to_string(&config).unwrap();