diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs index eb52ab1..6a21c23 100644 --- a/src-tauri/src/config.rs +++ b/src-tauri/src/config.rs @@ -28,6 +28,9 @@ pub struct ClaudeStartOptions { #[serde(default)] pub use_worktree: bool, + + #[serde(default)] + pub disable_1m_context: bool, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -119,6 +122,9 @@ pub struct HikariConfig { #[serde(default)] pub use_worktree: bool, + + #[serde(default)] + pub disable_1m_context: bool, } impl Default for HikariConfig { @@ -152,6 +158,7 @@ impl Default for HikariConfig { budget_warning_threshold: 0.8, discord_rpc_enabled: true, use_worktree: false, + disable_1m_context: false, } } } @@ -259,6 +266,8 @@ mod tests { assert_eq!(config.budget_action, BudgetAction::Warn); assert!((config.budget_warning_threshold - 0.8).abs() < f32::EPSILON); assert!(config.discord_rpc_enabled); + assert!(!config.use_worktree); + assert!(!config.disable_1m_context); } #[test] @@ -292,6 +301,7 @@ mod tests { budget_warning_threshold: 0.75, discord_rpc_enabled: true, use_worktree: true, + disable_1m_context: false, }; let json = serde_json::to_string(&config).unwrap(); diff --git a/src-tauri/src/wsl_bridge.rs b/src-tauri/src/wsl_bridge.rs index c3e5fc8..77119c6 100644 --- a/src-tauri/src/wsl_bridge.rs +++ b/src-tauri/src/wsl_bridge.rs @@ -279,6 +279,11 @@ impl WslBridge { } } + // Disable 1M context window if requested + if options.disable_1m_context { + cmd.env("CLAUDE_CODE_DISABLE_1M_CONTEXT", "1"); + } + cmd } else { // Running on Windows - use wsl with bash login shell to ensure PATH is loaded @@ -319,6 +324,11 @@ impl WslBridge { } } + // Disable 1M context window if requested + if options.disable_1m_context { + claude_cmd.push_str("CLAUDE_CODE_DISABLE_1M_CONTEXT=1 "); + } + claude_cmd.push_str( "claude --output-format stream-json --input-format stream-json --verbose", ); diff --git a/src/lib/commands/slashCommands.ts b/src/lib/commands/slashCommands.ts index cdcfdd7..8d252c8 100644 --- a/src/lib/commands/slashCommands.ts +++ b/src/lib/commands/slashCommands.ts @@ -62,6 +62,7 @@ async function changeDirectory(path: string): Promise { mcp_servers_json: config.mcp_servers_json || null, allowed_tools: allAllowedTools, use_worktree: config.use_worktree ?? false, + disable_1m_context: config.disable_1m_context ?? false, }, }); @@ -137,6 +138,7 @@ async function startNewConversation(): Promise { mcp_servers_json: config.mcp_servers_json || null, allowed_tools: allAllowedTools, use_worktree: config.use_worktree ?? false, + disable_1m_context: config.disable_1m_context ?? false, }, }); diff --git a/src/lib/components/ConfigSidebar.svelte b/src/lib/components/ConfigSidebar.svelte index 4c82802..c4905f0 100644 --- a/src/lib/components/ConfigSidebar.svelte +++ b/src/lib/components/ConfigSidebar.svelte @@ -54,6 +54,7 @@ discord_rpc_enabled: true, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }); let showCustomThemeEditor = $state(false); @@ -489,6 +490,22 @@ Launch sessions with --worktree for isolated git worktree environments

+ + +
+ +

+ Sets CLAUDE_CODE_DISABLE_1M_CONTEXT=1 to opt out of the extended + context window +

+
diff --git a/src/lib/components/InputBar.svelte b/src/lib/components/InputBar.svelte index 3f9ceeb..62ea928 100644 --- a/src/lib/components/InputBar.svelte +++ b/src/lib/components/InputBar.svelte @@ -363,6 +363,7 @@ User: ${formattedMessage}`; mcp_servers_json: config.mcp_servers_json || null, allowed_tools: allAllowedTools, use_worktree: config.use_worktree ?? false, + disable_1m_context: config.disable_1m_context ?? false, }, }); diff --git a/src/lib/components/PermissionModal.svelte b/src/lib/components/PermissionModal.svelte index 02ac993..5943ff5 100644 --- a/src/lib/components/PermissionModal.svelte +++ b/src/lib/components/PermissionModal.svelte @@ -88,6 +88,7 @@ mcp_servers_json: config.mcp_servers_json || null, allowed_tools: newGrantedTools, use_worktree: config.use_worktree ?? false, + disable_1m_context: config.disable_1m_context ?? false, }, }); diff --git a/src/lib/components/StatusBar.svelte b/src/lib/components/StatusBar.svelte index 45f12b5..e4099b9 100644 --- a/src/lib/components/StatusBar.svelte +++ b/src/lib/components/StatusBar.svelte @@ -102,6 +102,7 @@ discord_rpc_enabled: true, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }); let streamerModeActive = $state(false); @@ -180,6 +181,7 @@ mcp_servers_json: currentConfig.mcp_servers_json || null, allowed_tools: allAllowedTools, use_worktree: currentConfig.use_worktree ?? false, + disable_1m_context: currentConfig.disable_1m_context ?? false, }, }); @@ -292,6 +294,7 @@ mcp_servers_json: currentConfig.mcp_servers_json || null, allowed_tools: allAllowedTools, use_worktree: currentConfig.use_worktree ?? false, + disable_1m_context: currentConfig.disable_1m_context ?? false, }, }); diff --git a/src/lib/components/UserQuestionModal.svelte b/src/lib/components/UserQuestionModal.svelte index bda1654..f26b3da 100644 --- a/src/lib/components/UserQuestionModal.svelte +++ b/src/lib/components/UserQuestionModal.svelte @@ -107,6 +107,7 @@ mcp_servers_json: config.mcp_servers_json || null, allowed_tools: grantedToolsList, use_worktree: config.use_worktree ?? false, + disable_1m_context: config.disable_1m_context ?? false, }, }); diff --git a/src/lib/stores/config.test.ts b/src/lib/stores/config.test.ts index 87b6283..883e48c 100644 --- a/src/lib/stores/config.test.ts +++ b/src/lib/stores/config.test.ts @@ -195,6 +195,7 @@ describe("config store", () => { discord_rpc_enabled: true, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }; expect(config.model).toBe("claude-sonnet-4"); @@ -242,6 +243,7 @@ describe("config store", () => { discord_rpc_enabled: true, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }; expect(config.model).toBeNull(); @@ -788,6 +790,7 @@ describe("config store", () => { discord_rpc_enabled: false, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }; const mockInvokeImpl = vi.mocked(invoke); diff --git a/src/lib/stores/config.ts b/src/lib/stores/config.ts index 3042a8b..c4b3bcd 100644 --- a/src/lib/stores/config.ts +++ b/src/lib/stores/config.ts @@ -49,6 +49,8 @@ export interface HikariConfig { show_thinking_blocks: boolean; // Worktree isolation use_worktree: boolean; + // Disable 1M context window + disable_1m_context: boolean; } const defaultConfig: HikariConfig = { @@ -90,6 +92,7 @@ const defaultConfig: HikariConfig = { discord_rpc_enabled: true, show_thinking_blocks: true, use_worktree: false, + disable_1m_context: false, }; function createConfigStore() {