From ed26b84177b93790481cf34ffe0edd010760e542 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Mon, 2 Mar 2026 09:59:16 -0800 Subject: [PATCH] Remove draftThreadTerminalState re-exports; use threadTerminalState directly - Delete draftThreadTerminalState.ts (was only re-exporting shared module) - Replace draftThreadTerminalState.test.ts with threadTerminalState.test.ts using createDefaultThreadTerminalState and reduceThreadTerminalState - Draft threads are first-class: same helpers and types as persisted threads Made-with: Cursor --- apps/web/src/draftThreadTerminalState.ts | 20 -------------- ...te.test.ts => threadTerminalState.test.ts} | 26 +++++++++---------- 2 files changed, 13 insertions(+), 33 deletions(-) delete mode 100644 apps/web/src/draftThreadTerminalState.ts rename apps/web/src/{draftThreadTerminalState.test.ts => threadTerminalState.test.ts} (70%) diff --git a/apps/web/src/draftThreadTerminalState.ts b/apps/web/src/draftThreadTerminalState.ts deleted file mode 100644 index e7e9fa3f61821761a898c69fd35c406d69c619fb..0000000000000000000000000000000000000000 --- a/apps/web/src/draftThreadTerminalState.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Re-exports shared thread terminal state and reducer so draft and persisted - * flows use the same shape and logic. See threadTerminalState.ts. - */ - -import { - createDefaultThreadTerminalState, - normalizeThreadTerminalState, - reduceThreadTerminalState, - type ThreadTerminalAction, - type ThreadTerminalState, -} from "./threadTerminalState"; - -export type DraftThreadTerminalState = ThreadTerminalState; -export type DraftThreadTerminalAction = ThreadTerminalAction; - -export const createDefaultDraftThreadTerminalState = createDefaultThreadTerminalState; -export const reduceDraftThreadTerminalState = reduceThreadTerminalState; - -export { normalizeThreadTerminalState }; diff --git a/apps/web/src/draftThreadTerminalState.test.ts b/apps/web/src/threadTerminalState.test.ts similarity index 70% rename from apps/web/src/draftThreadTerminalState.test.ts rename to apps/web/src/threadTerminalState.test.ts index 2b84282f514e0707311b470f34522dbd9c15e415..f5a18ffa9807e9bb62ac8938f1ba3d25363a3141 100644 --- a/apps/web/src/draftThreadTerminalState.test.ts +++ b/apps/web/src/threadTerminalState.test.ts @@ -1,13 +1,13 @@ import { describe, expect, it } from "vitest"; import { - createDefaultDraftThreadTerminalState, - reduceDraftThreadTerminalState, -} from "./draftThreadTerminalState"; + createDefaultThreadTerminalState, + reduceThreadTerminalState, +} from "./threadTerminalState"; -describe("draftThreadTerminalState", () => { +describe("threadTerminalState", () => { it("creates a closed default terminal state", () => { - expect(createDefaultDraftThreadTerminalState()).toEqual({ + expect(createDefaultThreadTerminalState()).toEqual({ terminalOpen: false, terminalHeight: 280, terminalIds: ["default"], @@ -19,11 +19,11 @@ describe("draftThreadTerminalState", () => { }); it("opens and splits terminal tabs into the active group", () => { - const opened = reduceDraftThreadTerminalState(createDefaultDraftThreadTerminalState(), { + const opened = reduceThreadTerminalState(createDefaultThreadTerminalState(), { type: "set-open", open: true, }); - const split = reduceDraftThreadTerminalState(opened, { + const split = reduceThreadTerminalState(opened, { type: "split", terminalId: "terminal-2", }); @@ -40,7 +40,7 @@ describe("draftThreadTerminalState", () => { }); it("creates new terminals in a new group", () => { - const next = reduceDraftThreadTerminalState(createDefaultDraftThreadTerminalState(), { + const next = reduceThreadTerminalState(createDefaultThreadTerminalState(), { type: "new", terminalId: "terminal-2", }); @@ -55,25 +55,25 @@ describe("draftThreadTerminalState", () => { }); it("resets to default when closing the last terminal", () => { - const closed = reduceDraftThreadTerminalState(createDefaultDraftThreadTerminalState(), { + const closed = reduceThreadTerminalState(createDefaultThreadTerminalState(), { type: "close", terminalId: "default", }); - expect(closed).toEqual(createDefaultDraftThreadTerminalState()); + expect(closed).toEqual(createDefaultThreadTerminalState()); }); it("keeps a valid active terminal after closing an active split terminal", () => { - const splitOnce = reduceDraftThreadTerminalState(createDefaultDraftThreadTerminalState(), { + const splitOnce = reduceThreadTerminalState(createDefaultThreadTerminalState(), { type: "split", terminalId: "terminal-2", }); - const splitTwice = reduceDraftThreadTerminalState(splitOnce, { + const splitTwice = reduceThreadTerminalState(splitOnce, { type: "split", terminalId: "terminal-3", }); - const closed = reduceDraftThreadTerminalState(splitTwice, { + const closed = reduceThreadTerminalState(splitTwice, { type: "close", terminalId: "terminal-3", }); -- 2.54.0