Skip to content

Commit 1e210f4

Browse files
committed
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
2 parents 436ffd6 + edadf4e commit 1e210f4

37 files changed

Lines changed: 1391 additions & 96 deletions

File tree

apps/desktop/src/main/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,8 @@ function main(): void {
484484
newChat: () => void openMainWindowAt(newChatRoute(config.get('lastRoute'))),
485485
closeFocusedBrowserTab: (win) => closeFocusedBrowserTab(win),
486486
reopenClosedBrowserTab: (win) => reopenClosedBrowserTab(win),
487+
closeFocusedTerminal: () => terminal.closeFocusedTerminal(),
488+
reopenClosedTerminal: () => terminal.reopenClosedTerminal(),
487489
toggleSidebar: () => getMainWindow()?.webContents.send('desktop:command', 'toggle-sidebar'),
488490
signOut: signOutFromMenu,
489491
checkForUpdates: () =>

apps/desktop/src/main/ipc.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,20 @@ export function registerIpcHandlers(deps: IpcDeps): void {
583583
return deps.terminal.executeTool(toolCallId, call.operation, args)
584584
},
585585
},
586+
'terminal:handoff-done': {
587+
kind: 'send',
588+
gate: 'app-origin',
589+
requires: 'terminal',
590+
handler: (terminalId) => {
591+
if (typeof terminalId === 'string') deps.terminal.finishHandoff(terminalId)
592+
},
593+
},
594+
'terminal:focused': {
595+
kind: 'send',
596+
gate: 'app-origin',
597+
requires: 'terminal',
598+
handler: (focused) => deps.terminal.setPanelFocused(focused === true),
599+
},
586600
'terminal:scrollback': {
587601
kind: 'invoke',
588602
gate: 'app-origin',

apps/desktop/src/main/menu.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ function makeDeps(): MenuDeps {
2020
openSettings: vi.fn(),
2121
newWindow: vi.fn(),
2222
newChat: vi.fn(),
23+
closeFocusedTerminal: vi.fn(() => false),
24+
reopenClosedTerminal: vi.fn(() => false),
2325
closeFocusedBrowserTab: vi.fn(() => false),
2426
reopenClosedBrowserTab: vi.fn(() => false),
2527
toggleSidebar: vi.fn(),

apps/desktop/src/main/menu.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ export interface MenuDeps {
1616
newChat: () => void
1717
closeFocusedBrowserTab: (win: BrowserWindow | null) => boolean
1818
reopenClosedBrowserTab: (win: BrowserWindow | null) => boolean
19+
/**
20+
* Terminal counterparts. Menu accelerators are global, so Cmd-W and
21+
* Cmd-Shift-T reach here whatever the user is looking at; each panel gets
22+
* asked whether the keystroke was meant for it before the window acts.
23+
*/
24+
closeFocusedTerminal: () => boolean
25+
reopenClosedTerminal: () => boolean
1926
toggleSidebar: () => void
2027
signOut: () => void
2128
checkForUpdates: () => void
@@ -101,6 +108,7 @@ export function buildMenuTemplate(deps: MenuDeps): MenuItemConstructorOptions[]
101108
label: 'Reopen Closed Tab',
102109
accelerator: 'CmdOrCtrl+Shift+T',
103110
click: (_item, focusedWindow) => {
111+
if (deps.reopenClosedTerminal()) return
104112
const win =
105113
focusedWindow instanceof BrowserWindow ? focusedWindow : deps.getMainWindow()
106114
deps.reopenClosedBrowserTab(win)
@@ -110,6 +118,7 @@ export function buildMenuTemplate(deps: MenuDeps): MenuItemConstructorOptions[]
110118
label: 'Close Window',
111119
accelerator: 'CmdOrCtrl+W',
112120
click: (_item, focusedWindow) => {
121+
if (deps.closeFocusedTerminal()) return
113122
const win =
114123
focusedWindow instanceof BrowserWindow ? focusedWindow : deps.getMainWindow()
115124
if (deps.closeFocusedBrowserTab(win)) return

0 commit comments

Comments
 (0)