generated from nhcarrigan/template
feat: CLI v2.1.68–v2.1.74 compatibility updates (#221)
## Summary This PR brings Hikari Desktop up to full compatibility with Claude Code CLI versions v2.1.68 through v2.1.74, implementing all changelog items audited in issues #200–#218. ## Changes ### Bug Fixes - Remove deprecated Claude Opus 4.0 and 4.1 models from the model selector - Auto-migrate users pinned to deprecated models to Opus 4.6 ### New Features - Add cron tool support (`CronCreate`, `CronDelete`, `CronList`) with character state mapping and `CLAUDE_CODE_DISABLE_CRON` settings toggle - Handle `EnterWorktree` and `ExitWorktree` tools in character state mapping and tool display - Add CLI update check with npm registry indicator in the version bar - Add `agent_type` field and support the Agent tool rename from CLI v2.1.69 - Consume `worktree` field from status line hook events - Display per-agent model override in the agent monitor tree - Expose Claude Code CLI built-in slash commands (`/simplify`, `/loop`, `/batch`, `/memory`, `/context`) in the command menu with CLI badges - Add `includeGitInstructions` toggle in settings - Add `ENABLE_CLAUDEAI_MCP_SERVERS` opt-out setting - Linkify MCP binary file paths (PDFs, audio, Office docs) in markdown output - Add auto-memory panel, `/memory` slash command shortcut, and unified toast notification system - Toast notifications for `WorktreeCreate` and `WorktreeRemove` hook events - Sort session resume list by most recent activity, with most recent user message as preview - Convert WSL Linux paths to Windows UNC paths when opening binary files via `open_binary_file` command - Expose `autoMemoryDirectory` setting in ConfigSidebar (Agent Settings section) - Add `/context` as a CLI built-in in the slash command menu - Expose `modelOverrides` setting as a JSON textarea in ConfigSidebar (for AWS Bedrock, Google Vertex, etc.) > **Note:** The CLI update check commit does not have a corresponding issue — it was a bonus addition during the audit sprint. ## Closes Closes #200 Closes #201 Closes #202 Closes #205 Closes #206 Closes #207 Closes #208 Closes #209 Closes #210 Closes #211 Closes #212 Closes #213 Closes #214 Closes #215 Closes #216 Closes #217 Closes #218 Reviewed-on: #221 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #221.
This commit is contained in:
+35
-2
@@ -13,6 +13,7 @@ import type {
|
||||
} from "$lib/types/messages";
|
||||
import type { CharacterState } from "$lib/types/states";
|
||||
import type { AgentStartPayload, AgentEndPayload } from "$lib/types/agents";
|
||||
import type { WorktreeEvent } from "$lib/types/worktree";
|
||||
import { agentStore } from "$lib/stores/agents";
|
||||
import { todos } from "$lib/stores/todos";
|
||||
import {
|
||||
@@ -22,6 +23,7 @@ import {
|
||||
handleNewUserMessage,
|
||||
} from "$lib/notifications/rules";
|
||||
import { notificationManager } from "$lib/notifications/notificationManager";
|
||||
import { toastStore } from "$lib/stores/toasts";
|
||||
|
||||
interface StateChangePayload {
|
||||
state: CharacterState;
|
||||
@@ -430,6 +432,16 @@ export async function initializeTauriListeners() {
|
||||
parent_tool_use_id
|
||||
);
|
||||
}
|
||||
|
||||
// Detect auto-memory updates — tool writes to ~/.claude/ markdown files
|
||||
if (
|
||||
line_type === "tool" &&
|
||||
content &&
|
||||
content.includes("/.claude/") &&
|
||||
content.includes(".md")
|
||||
) {
|
||||
toastStore.addInfo("Auto-memory updated", "🧠");
|
||||
}
|
||||
});
|
||||
unlisteners.push(outputUnlisten);
|
||||
|
||||
@@ -515,6 +527,7 @@ export async function initializeTauriListeners() {
|
||||
agent_id,
|
||||
description,
|
||||
subagent_type,
|
||||
model,
|
||||
started_at,
|
||||
conversation_id,
|
||||
parent_tool_use_id,
|
||||
@@ -526,6 +539,7 @@ export async function initializeTauriListeners() {
|
||||
agentId: agent_id,
|
||||
description,
|
||||
subagentType: subagent_type,
|
||||
model,
|
||||
startedAt: started_at,
|
||||
status: "running",
|
||||
parentToolUseId: parent_tool_use_id,
|
||||
@@ -538,9 +552,10 @@ export async function initializeTauriListeners() {
|
||||
conversationId: string;
|
||||
toolUseId: string;
|
||||
agentId: string;
|
||||
agentType?: string;
|
||||
}>("claude:agent-update", (event) => {
|
||||
const { conversationId, toolUseId, agentId } = event.payload;
|
||||
agentStore.updateAgentId(conversationId, toolUseId, agentId);
|
||||
const { conversationId, toolUseId, agentId, agentType } = event.payload;
|
||||
agentStore.updateAgentId(conversationId, toolUseId, agentId, agentType);
|
||||
});
|
||||
unlisteners.push(agentUpdateUnlisten);
|
||||
|
||||
@@ -560,6 +575,24 @@ export async function initializeTauriListeners() {
|
||||
});
|
||||
unlisteners.push(agentEndUnlisten);
|
||||
|
||||
const worktreeUnlisten = await listen<WorktreeEvent>("claude:worktree", (event) => {
|
||||
const { conversation_id, event_type, worktree } = event.payload;
|
||||
const targetConversationId = conversation_id || get(claudeStore.activeConversationId);
|
||||
if (targetConversationId) {
|
||||
claudeStore.setWorktreeInfo(
|
||||
targetConversationId,
|
||||
event_type === "create" && worktree ? worktree : null
|
||||
);
|
||||
}
|
||||
|
||||
if (event_type === "create" && worktree) {
|
||||
toastStore.addInfo(`Worktree created: ${worktree.branch}`, "🌿");
|
||||
} else if (event_type === "remove") {
|
||||
toastStore.addInfo("Worktree removed", "🌿");
|
||||
}
|
||||
});
|
||||
unlisteners.push(worktreeUnlisten);
|
||||
|
||||
const questionUnlisten = await listen<UserQuestionEvent>("claude:question", (event) => {
|
||||
const questionEvent = event.payload;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user