diff --git a/AGENTS.md b/AGENTS.md index 93066114..3d01994d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -115,7 +115,7 @@ npm run test:vitest -- ... # Repo-owned direct Vitest path for focused passthro **WebSocket Protocol:** Schema-validated messages using Zod. Handshake flow: client sends `hello` with token → server validates → sends `ready`. Message types include `terminal.create/input/resize/detach/attach` and broadcasts like `sessions.updated`. -**PTY Lifecycle:** Each terminal has a unique ID. Server maintains 64KB scrollback buffer. On attach, client receives buffer snapshot then streams new output. On detach, process continues running (background session). Configurable idle timeout (180 mins default). +**PTY Lifecycle:** Each terminal has a unique ID. Server maintains 64KB scrollback buffer. On attach, client receives buffer snapshot then streams new output. On detach, process continues running (background session). Configurable idle timeout (15 mins default). **Claude Session Discovery:** Watches `~/.claude/projects/*/sessions/*.jsonl` for new files. Parses JSONL streams to extract messages, groups by project path. diff --git a/shared/settings.ts b/shared/settings.ts index ee1f3435..9608eced 100644 --- a/shared/settings.ts +++ b/shared/settings.ts @@ -725,7 +725,7 @@ export function createDefaultServerSettings(options: SettingsDefaultsOptions = { debug: options.loggingDebug ?? false, }, safety: { - autoKillIdleMinutes: 180, + autoKillIdleMinutes: 15, }, terminal: { scrollback: 10000, diff --git a/src/components/settings/SafetySettings.tsx b/src/components/settings/SafetySettings.tsx index 4c49aa08..8cdc4e41 100644 --- a/src/components/settings/SafetySettings.tsx +++ b/src/components/settings/SafetySettings.tsx @@ -498,9 +498,9 @@ export default function SafetySettings({ String(v)} onChange={(v) => { applyServerSetting({ safety: { autoKillIdleMinutes: v } }) diff --git a/test/unit/client/components/SettingsView.behavior.test.tsx b/test/unit/client/components/SettingsView.behavior.test.tsx index e267187e..90824299 100644 --- a/test/unit/client/components/SettingsView.behavior.test.tsx +++ b/test/unit/client/components/SettingsView.behavior.test.tsx @@ -327,7 +327,7 @@ describe('SettingsView behavior sections', () => { const autoKillSlider = getSlider((slider) => { const min = slider.getAttribute('min') const max = slider.getAttribute('max') - return min === '10' && max === '720' + return min === '5' && max === '720' }) fireEvent.change(autoKillSlider, { target: { value: '300' } }) diff --git a/test/unit/shared/settings.test.ts b/test/unit/shared/settings.test.ts index 96f63fe5..f213efcd 100644 --- a/test/unit/shared/settings.test.ts +++ b/test/unit/shared/settings.test.ts @@ -176,6 +176,7 @@ describe('shared settings contract', () => { expect(resolved.terminal.fontFamily).toBe('Fira Code') expect(resolved.terminal.scrollback).toBe(10000) + expect(resolved.safety.autoKillIdleMinutes).toBe(15) expect(resolved.sidebar.sortMode).toBe('project') expect(resolved.agentChat.defaultPlugins).toEqual([]) })