generated from nhcarrigan/template
feat: CLI v2.1.81–v2.1.104 support (#261)
## 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:
@@ -2,7 +2,7 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { onMount } from "svelte";
|
||||
|
||||
const SUPPORTED_CLI_VERSION = "2.1.80";
|
||||
const SUPPORTED_CLI_VERSION = "2.1.104";
|
||||
|
||||
let installedVersion = $state("Loading...");
|
||||
let latestNpmVersion = $state<string | null>(null);
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
max_output_tokens: null,
|
||||
trusted_workspaces: [],
|
||||
background_image_path: null,
|
||||
@@ -585,6 +586,22 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Disable Skill Shell Execution -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center gap-3 cursor-pointer">
|
||||
<input
|
||||
type="checkbox"
|
||||
bind:checked={config.disable_skill_shell_execution}
|
||||
class="w-4 h-4 rounded border-[var(--border-color)] bg-[var(--bg-primary)] text-[var(--accent-primary)] focus:ring-[var(--accent-primary)]"
|
||||
/>
|
||||
<span class="text-sm text-[var(--text-primary)]">Disable skill shell execution</span>
|
||||
</label>
|
||||
<p class="text-xs text-[var(--text-tertiary)] mt-1 ml-7">
|
||||
Passes <code class="font-mono">disableSkillShellExecution: true</code> to prevent skill scripts
|
||||
from executing shell commands (requires Claude Code v2.1.91+)
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Include Git Instructions -->
|
||||
<div class="mb-4">
|
||||
<label class="flex items-center gap-3 cursor-pointer">
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
});
|
||||
|
||||
let streamerModeActive = $state(false);
|
||||
|
||||
@@ -225,6 +225,7 @@ describe("config store", () => {
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
};
|
||||
|
||||
expect(config.model).toBe("claude-sonnet-4");
|
||||
@@ -289,6 +290,7 @@ describe("config store", () => {
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
};
|
||||
|
||||
expect(config.model).toBeNull();
|
||||
@@ -908,6 +910,7 @@ describe("config store", () => {
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
};
|
||||
|
||||
const mockInvokeImpl = vi.mocked(invoke);
|
||||
|
||||
@@ -91,6 +91,8 @@ export interface HikariConfig {
|
||||
auto_memory_directory: string | null;
|
||||
// Model overrides for provider-specific model IDs (AWS Bedrock, Google Vertex, etc.)
|
||||
model_overrides: Record<string, string> | null;
|
||||
// Prevents skill scripts from executing shell commands (Claude Code v2.1.91+)
|
||||
disable_skill_shell_execution: boolean;
|
||||
}
|
||||
|
||||
const defaultConfig: HikariConfig = {
|
||||
@@ -149,6 +151,7 @@ const defaultConfig: HikariConfig = {
|
||||
enable_claudeai_mcp_servers: true,
|
||||
auto_memory_directory: null,
|
||||
model_overrides: null,
|
||||
disable_skill_shell_execution: false,
|
||||
};
|
||||
|
||||
function createConfigStore() {
|
||||
|
||||
Reference in New Issue
Block a user