From 2936b57ffc706f870a84db2020fd1ee9023fbc98 Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Sun, 14 Dec 2025 14:25:25 -0800 Subject: [PATCH] feat: remove uimode/parallel from settings (#206) --- src/headless.ts | 4 ++-- src/index.ts | 4 ++-- src/settings-manager.ts | 6 ------ src/settings.ts | 4 ---- src/tests/permissions-loader.test.ts | 6 +++--- src/tests/settings-manager.test.ts | 30 ++++++++++++---------------- 6 files changed, 20 insertions(+), 34 deletions(-) diff --git a/src/headless.ts b/src/headless.ts index 4df8a12..af88de6 100644 --- a/src/headless.ts +++ b/src/headless.ts @@ -168,7 +168,7 @@ export async function handleHeadlessCommand( updateArgs, forceNew, skillsDirectory, - settings.parallelToolCalls, + true, // parallelToolCalls always enabled sleeptimeFlag ?? settings.enableSleeptime, specifiedSystem, initBlocks, @@ -213,7 +213,7 @@ export async function handleHeadlessCommand( updateArgs, false, skillsDirectory, - settings.parallelToolCalls, + true, // parallelToolCalls always enabled sleeptimeFlag ?? settings.enableSleeptime, specifiedSystem, undefined, diff --git a/src/index.ts b/src/index.ts index 5d2ff1c..a351bcd 100755 --- a/src/index.ts +++ b/src/index.ts @@ -597,7 +597,7 @@ async function main() { updateArgs, freshBlocks, // Only create new blocks if --fresh-blocks passed skillsDirectory, - settings.parallelToolCalls, + true, // parallelToolCalls always enabled sleeptimeFlag ?? settings.enableSleeptime, system, initBlocks, @@ -648,7 +648,7 @@ async function main() { updateArgs, false, // Don't force new blocks when auto-creating (reuse shared blocks) skillsDirectory, - settings.parallelToolCalls, + true, // parallelToolCalls always enabled sleeptimeFlag ?? settings.enableSleeptime, system, undefined, diff --git a/src/settings-manager.ts b/src/settings-manager.ts index 71b3dd5..18f64d3 100644 --- a/src/settings-manager.ts +++ b/src/settings-manager.ts @@ -6,13 +6,9 @@ import { join } from "node:path"; import type { PermissionRules } from "./permissions/types"; import { exists, mkdir, readFile, writeFile } from "./utils/fs.js"; -export type UIMode = "simple" | "rich"; - export interface Settings { - uiMode: UIMode; lastAgent: string | null; tokenStreaming: boolean; - parallelToolCalls: boolean; enableSleeptime: boolean; globalSharedBlockIds: Record; permissions?: PermissionRules; @@ -34,10 +30,8 @@ export interface LocalProjectSettings { } const DEFAULT_SETTINGS: Settings = { - uiMode: "simple", lastAgent: null, tokenStreaming: false, - parallelToolCalls: true, enableSleeptime: false, globalSharedBlockIds: {}, }; diff --git a/src/settings.ts b/src/settings.ts index 4568c04..ca92d0d 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -6,10 +6,7 @@ import { join } from "node:path"; import type { PermissionRules } from "./permissions/types"; import { exists, mkdir, readFile, writeFile } from "./utils/fs.js"; -export type UIMode = "simple" | "rich"; - export interface Settings { - uiMode: UIMode; lastAgent: string | null; tokenStreaming: boolean; globalSharedBlockIds: Record; // label -> blockId mapping (persona, human; style moved to project settings) @@ -23,7 +20,6 @@ export interface ProjectSettings { } const DEFAULT_SETTINGS: Settings = { - uiMode: "simple", lastAgent: null, tokenStreaming: false, globalSharedBlockIds: {}, diff --git a/src/tests/permissions-loader.test.ts b/src/tests/permissions-loader.test.ts index bd80b48..ef3701f 100644 --- a/src/tests/permissions-loader.test.ts +++ b/src/tests/permissions-loader.test.ts @@ -255,7 +255,7 @@ test("Save permission preserves other settings fields", async () => { await Bun.write( settingsPath, JSON.stringify({ - uiMode: "rich", + tokenStreaming: true, lastAgent: "agent-123", permissions: { allow: [], @@ -268,7 +268,7 @@ test("Save permission preserves other settings fields", async () => { const file = Bun.file(settingsPath); const settings = await file.json(); - expect(settings.uiMode).toBe("rich"); + expect(settings.tokenStreaming).toBe(true); expect(settings.lastAgent).toBe("agent-123"); expect(settings.permissions.allow).toContain("Bash(ls:*)"); }); @@ -298,7 +298,7 @@ test("Load permissions handles missing permissions field", async () => { await Bun.write( settingsPath, JSON.stringify({ - uiMode: "rich", + tokenStreaming: true, // No permissions field }), ); diff --git a/src/tests/settings-manager.test.ts b/src/tests/settings-manager.test.ts index a5742cb..61af712 100644 --- a/src/tests/settings-manager.test.ts +++ b/src/tests/settings-manager.test.ts @@ -45,7 +45,6 @@ describe("Settings Manager - Initialization", () => { // Settings should be accessible immediately after initialization const settings = settingsManager.getSettings(); expect(settings).toBeDefined(); - expect(settings.uiMode).toBeDefined(); expect(typeof settings.tokenStreaming).toBe("boolean"); expect(settings.globalSharedBlockIds).toBeDefined(); expect(typeof settings.globalSharedBlockIds).toBe("object"); @@ -55,7 +54,6 @@ describe("Settings Manager - Initialization", () => { // First initialize and set some settings await settingsManager.initialize(); settingsManager.updateSettings({ - uiMode: "rich", tokenStreaming: true, lastAgent: "agent-123", }); @@ -68,7 +66,6 @@ describe("Settings Manager - Initialization", () => { await settingsManager.initialize(); const settings = settingsManager.getSettings(); - expect(settings.uiMode).toBe("rich"); expect(settings.tokenStreaming).toBe(true); expect(settings.lastAgent).toBe("agent-123"); }); @@ -110,35 +107,35 @@ describe("Settings Manager - Global Settings", () => { }); test("Get specific setting", () => { - settingsManager.updateSettings({ uiMode: "rich" }); + settingsManager.updateSettings({ tokenStreaming: true }); - const uiMode = settingsManager.getSetting("uiMode"); - expect(uiMode).toBe("rich"); + const tokenStreaming = settingsManager.getSetting("tokenStreaming"); + expect(tokenStreaming).toBe(true); }); test("Update single setting", () => { // Verify initial state first const initialSettings = settingsManager.getSettings(); - const initialUiMode = initialSettings.uiMode; + const initialLastAgent = initialSettings.lastAgent; settingsManager.updateSettings({ tokenStreaming: true }); const settings = settingsManager.getSettings(); expect(settings.tokenStreaming).toBe(true); - expect(settings.uiMode).toBe(initialUiMode); // Other settings unchanged + expect(settings.lastAgent).toBe(initialLastAgent); // Other settings unchanged }); test("Update multiple settings", () => { settingsManager.updateSettings({ - uiMode: "rich", tokenStreaming: true, lastAgent: "agent-456", + enableSleeptime: true, }); const settings = settingsManager.getSettings(); - expect(settings.uiMode).toBe("rich"); expect(settings.tokenStreaming).toBe(true); expect(settings.lastAgent).toBe("agent-456"); + expect(settings.enableSleeptime).toBe(true); }); test("Update global shared block IDs", () => { @@ -187,7 +184,7 @@ describe("Settings Manager - Global Settings", () => { test("Settings persist to disk", async () => { settingsManager.updateSettings({ - uiMode: "rich", + tokenStreaming: true, lastAgent: "agent-789", }); @@ -199,7 +196,7 @@ describe("Settings Manager - Global Settings", () => { await settingsManager.initialize(); const settings = settingsManager.getSettings(); - expect(settings.uiMode).toBe("rich"); + expect(settings.tokenStreaming).toBe(true); expect(settings.lastAgent).toBe("agent-789"); }); }); @@ -452,7 +449,7 @@ describe("Settings Manager - Reset", () => { test("Can reinitialize after reset", async () => { await settingsManager.initialize(); - settingsManager.updateSettings({ uiMode: "rich" }); + settingsManager.updateSettings({ tokenStreaming: true }); // Wait for persist await new Promise((resolve) => setTimeout(resolve, 100)); @@ -461,7 +458,7 @@ describe("Settings Manager - Reset", () => { await settingsManager.initialize(); const settings = settingsManager.getSettings(); - expect(settings.uiMode).toBe("rich"); + expect(settings.tokenStreaming).toBe(true); }); }); @@ -483,7 +480,6 @@ describe("Settings Manager - Edge Cases", () => { // Should have default values (not corrupt) expect(settings).toBeDefined(); - expect(settings.uiMode).toBeDefined(); expect(settings.tokenStreaming).toBeDefined(); expect(typeof settings.tokenStreaming).toBe("boolean"); }); @@ -509,9 +505,9 @@ describe("Settings Manager - Edge Cases", () => { await settingsManager.initialize(); settingsManager.updateSettings({ - uiMode: "rich", tokenStreaming: true, lastAgent: "agent-1", + enableSleeptime: true, }); // Partial update @@ -520,8 +516,8 @@ describe("Settings Manager - Edge Cases", () => { }); const settings = settingsManager.getSettings(); - expect(settings.uiMode).toBe("rich"); // Preserved expect(settings.tokenStreaming).toBe(true); // Preserved + expect(settings.enableSleeptime).toBe(true); // Preserved expect(settings.lastAgent).toBe("agent-2"); // Updated }); });