From ebe12cdd8f460578f07ec366e4dfb576602b5f9c Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sun, 31 May 2026 05:25:41 -0700 Subject: [PATCH] Route floating workspace markdown through template picker --- .../lib/floating-workspace-tab-creation.ts | 7 +++-- ...loating-workspace-terminal-actions.test.ts | 29 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/renderer/src/lib/floating-workspace-tab-creation.ts b/src/renderer/src/lib/floating-workspace-tab-creation.ts index cc76e5448b2..258e4393df8 100644 --- a/src/renderer/src/lib/floating-workspace-tab-creation.ts +++ b/src/renderer/src/lib/floating-workspace-tab-creation.ts @@ -1,6 +1,6 @@ import { FLOATING_TERMINAL_WORKTREE_ID } from '../../../shared/constants' import type { BrowserTab, TerminalTab } from '../../../shared/types' -import { createUntitledMarkdownFile } from './create-untitled-markdown' +import { createUntitledMarkdownFileWithTemplateSelection } from './create-untitled-markdown' import { getConnectionId } from './connection-context' import { detectLanguage } from './language-detect' import type { AppState } from '@/store/types' @@ -84,12 +84,15 @@ export async function createFloatingWorkspaceMarkdownTab( if (!floatingMarkdownDirectory) { return } - const fileInfo = await createUntitledMarkdownFile( + const fileInfo = await createUntitledMarkdownFileWithTemplateSelection( floatingMarkdownDirectory, FLOATING_TERMINAL_WORKTREE_ID, getConnectionId(FLOATING_TERMINAL_WORKTREE_ID) ?? undefined, { activeRuntimeEnvironmentId: null } ) + if (!fileInfo) { + return + } store.openFile( { ...fileInfo, diff --git a/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts b/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts index dbaa0b53aed..7ad601b31e1 100644 --- a/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts +++ b/src/renderer/src/lib/floating-workspace-terminal-actions.test.ts @@ -21,7 +21,7 @@ import { const activateWebRuntimeSessionTabMock = vi.hoisted(() => vi.fn()) const createWebRuntimeSessionBrowserTabMock = vi.hoisted(() => vi.fn()) const createWebRuntimeSessionTerminalMock = vi.hoisted(() => vi.fn()) -const createUntitledMarkdownFileMock = vi.hoisted(() => vi.fn()) +const createUntitledMarkdownFileWithTemplateSelectionMock = vi.hoisted(() => vi.fn()) const focusTerminalTabSurfaceMock = vi.hoisted(() => vi.fn()) const isWebRuntimeSessionActiveMock = vi.hoisted(() => vi.fn()) @@ -33,7 +33,8 @@ vi.mock('@/runtime/web-runtime-session', () => ({ })) vi.mock('./create-untitled-markdown', () => ({ - createUntitledMarkdownFile: createUntitledMarkdownFileMock + createUntitledMarkdownFileWithTemplateSelection: + createUntitledMarkdownFileWithTemplateSelectionMock })) vi.mock('./connection-context', () => ({ @@ -423,7 +424,7 @@ describe('createFloatingWorkspaceBrowserTab', () => { describe('createFloatingWorkspaceMarkdownTab', () => { beforeEach(() => { - createUntitledMarkdownFileMock.mockReset() + createUntitledMarkdownFileWithTemplateSelectionMock.mockReset() }) it('creates floating markdown tabs without activating the main workspace', async () => { @@ -439,11 +440,11 @@ describe('createFloatingWorkspaceMarkdownTab', () => { activeGroupIdByWorktree: { [FLOATING_TERMINAL_WORKTREE_ID]: 'floating-group' }, openFile: vi.fn() } - createUntitledMarkdownFileMock.mockResolvedValue(fileInfo) + createUntitledMarkdownFileWithTemplateSelectionMock.mockResolvedValue(fileInfo) await createFloatingWorkspaceMarkdownTab(store as never, '/tmp/orca/floating-workspace') - expect(createUntitledMarkdownFileMock).toHaveBeenCalledWith( + expect(createUntitledMarkdownFileWithTemplateSelectionMock).toHaveBeenCalledWith( '/tmp/orca/floating-workspace', FLOATING_TERMINAL_WORKTREE_ID, undefined, @@ -455,6 +456,24 @@ describe('createFloatingWorkspaceMarkdownTab', () => { suppressActiveRuntimeFallback: true }) }) + + it('does not open a floating markdown tab when template selection is cancelled', async () => { + const store = { + activeGroupIdByWorktree: { [FLOATING_TERMINAL_WORKTREE_ID]: 'floating-group' }, + openFile: vi.fn() + } + createUntitledMarkdownFileWithTemplateSelectionMock.mockResolvedValue(null) + + await createFloatingWorkspaceMarkdownTab(store as never, '/tmp/orca/floating-workspace') + + expect(createUntitledMarkdownFileWithTemplateSelectionMock).toHaveBeenCalledWith( + '/tmp/orca/floating-workspace', + FLOATING_TERMINAL_WORKTREE_ID, + undefined, + { activeRuntimeEnvironmentId: null } + ) + expect(store.openFile).not.toHaveBeenCalled() + }) }) describe('switchFloatingWorkspaceTab', () => {