NexusTerm: an SSH session manager for Linux
Connection tree with interleaved folders and hosts, tabbed terminals grouped by host, a pinned local shell, TOFU host key verification, and credentials held by the OS keyring. Terminal bytes travel on a per-session MessagePort with credit-based flow control, so one session running `cat` on a large file cannot stall the others. Transports reconnect on their own with jittered backoff, keeping the scrollback and the tab while replacing only the connection beneath. 156 tests, including integration tests against a real sshd and a migration exercised against a database built in the old shape.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"name": "nexusterm",
|
||||
"version": "0.1.0",
|
||||
"description": "Desktop SSH session manager — connection tree, tabbed terminals, tunnels, local shell and serial",
|
||||
"main": "./out/main/index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"author": {
|
||||
"name": "ylhan",
|
||||
"email": "ylhan@example.com"
|
||||
},
|
||||
"homepage": "https://example.com/nexusterm",
|
||||
"desktopName": "dev.ylhan.nexusterm.desktop",
|
||||
"engines": {
|
||||
"node": ">=22.12.0"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "electron-vite dev",
|
||||
"build": "electron-vite build",
|
||||
"preview": "electron-vite preview",
|
||||
"typecheck:node": "tsc --noEmit -p tsconfig.node.json",
|
||||
"typecheck:web": "tsc --noEmit -p tsconfig.web.json",
|
||||
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest",
|
||||
"smoke": "node scripts/ipc-smoke.mjs",
|
||||
"e2e:ssh": "node scripts/ssh-e2e.mjs",
|
||||
"rebuild:native": "electron-builder install-app-deps",
|
||||
"dist": "npm run build && electron-builder",
|
||||
"verify:package": "node scripts/verify-package.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"better-sqlite3": "13.0.3",
|
||||
"node-pty": "1.1.0",
|
||||
"ssh2": "1.17.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@electron/rebuild": "4.2.0",
|
||||
"@types/better-sqlite3": "9.6.0",
|
||||
"@types/node": "24.13.5",
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@types/ssh2": "1.15.6",
|
||||
"@vitejs/plugin-react": "5.2.0",
|
||||
"@xterm/addon-fit": "0.11.0",
|
||||
"@xterm/addon-search": "0.16.0",
|
||||
"@xterm/addon-serialize": "0.14.0",
|
||||
"@xterm/addon-unicode11": "0.9.0",
|
||||
"@xterm/addon-web-links": "0.12.0",
|
||||
"@xterm/addon-webgl": "0.19.0",
|
||||
"@xterm/xterm": "6.0.0",
|
||||
"electron": "44.4.1",
|
||||
"electron-builder": "26.15.3",
|
||||
"electron-vite": "5.0.0",
|
||||
"i18next": "26.4.2",
|
||||
"lucide-react": "1.46.0",
|
||||
"radix-ui": "1.6.7",
|
||||
"react": "19.3.0",
|
||||
"react-dom": "19.3.0",
|
||||
"react-i18next": "17.0.14",
|
||||
"typescript": "7.0.2",
|
||||
"vite": "7.3.6",
|
||||
"vitest": "5.0.1",
|
||||
"zod": "4.6.5",
|
||||
"zustand": "5.0.15"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user