Skip to content

Commit 0710c6d

Browse files
Add ping health check and extended command palette (> mode)
1 parent d693737 commit 0710c6d

6 files changed

Lines changed: 236 additions & 118 deletions

File tree

src/main/store.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { IpcMain } from 'electron'
2+
import * as net from 'net'
23
import { Connection, ConnectionGroup, SSHKey } from '../types/shared'
34
import { getDb, rowToConnection, connToRow, rowToGroup, rowToSshKey } from './db'
45

@@ -174,4 +175,19 @@ export function setupStoreHandlers(ipcMain: IpcMain): void {
174175
}
175176
return true
176177
})
178+
179+
// ── TCP Ping ─────────────────────────────────────────────────────────────────
180+
ipcMain.handle('connection:ping', (_event, host: string, port: number) => {
181+
return new Promise<{ alive: boolean; latency?: number }>((resolve) => {
182+
const start = Date.now()
183+
const socket = new net.Socket()
184+
socket.setTimeout(3000)
185+
socket.connect(port, host, () => {
186+
socket.destroy()
187+
resolve({ alive: true, latency: Date.now() - start })
188+
})
189+
socket.on('error', () => { socket.destroy(); resolve({ alive: false }) })
190+
socket.on('timeout', () => { socket.destroy(); resolve({ alive: false }) })
191+
})
192+
})
177193
}

src/preload/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,12 @@ const api = {
231231
ipcRenderer.on('ai:plan', handler)
232232
return () => ipcRenderer.removeListener('ai:plan', handler)
233233
},
234-
}
234+
},
235+
236+
connection: {
237+
ping: (host: string, port: number): Promise<{ alive: boolean; latency?: number }> =>
238+
ipcRenderer.invoke('connection:ping', host, port),
239+
},
235240
}
236241

237242
if (process.contextIsolated) {

0 commit comments

Comments
 (0)