📻Free and open-sourced terminal/ssh/sftp/ftp/telnet/serialport/RDP/VNC/Spice client(Linux, Mac, Windows, Android, HarmonyOS, iOS)
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 40 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_electerm_bookmark_group
-
add_electerm_bookmark_local
-
add_electerm_bookmark_serial
-
add_electerm_bookmark_ssh
-
add_electerm_bookmark_telnet
-
cancel_electerm_terminal_command
-
close_electerm_tab
-
delete_electerm_bookmark
-
duplicate_electerm_tab
-
edit_electerm_bookmark
-
electerm_sftp_del_file_or_folder
-
electerm_sftp_download
-
electerm_sftp_list
-
electerm_sftp_read_file
-
electerm_sftp_stat
-
electerm_sftp_transfer_history
-
electerm_sftp_transfer_list
-
electerm_sftp_upload
-
electerm_zmodem_download
-
electerm_zmodem_upload
-
execute_electerm_command
-
get_electerm_active_tab
-
get_electerm_bookmark
-
get_electerm_settings
-
get_electerm_terminal_output
-
get_electerm_terminal_selection
-
get_electerm_terminal_status
-
list_electerm_bookmark_groups
-
list_electerm_bookmarks
-
list_electerm_tabs
-
open_electerm_bookmark
-
open_electerm_local_terminal
-
open_electerm_tab_local
-
open_electerm_tab_serial
-
open_electerm_tab_ssh
-
open_electerm_tab_telnet
-
reload_electerm_tab
-
send_electerm_terminal_command
-
switch_electerm_tab
-
wait_for_electerm_terminal_idle
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 66f193d · analyzer v33 · 5h ago
danger signals2
- committed secret private key electerm-electerm-66f193d/src/test/integration/lib/ssh-test-server.js :23
PEM private key block (redacted) - credential in logs credential in log electerm-electerm-66f193d/src/test/e2e/common/ftp.js :20
console.log('login', username, password)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 755
filesystem 78
- fs electerm-electerm-66f193d/build/bin/appimage-integration.js :10
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/build-common.js :7
const { writeFileSync, readFileSync } = require('fs') - fs electerm-electerm-66f193d/build/bin/build-win-appx.js :3
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/clean-empty-folders.js :3
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/clean-yml.js :2
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/post-install.js :5
const { existsSync } = require('fs') - fs electerm-electerm-66f193d/build/bin/prepare.js :46
require('fs').writeFileSync( - fs electerm-electerm-66f193d/build/bin/prepublish.js :6
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/publish-electerm-react.js :3
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/pug.js :5
const fs = require('fs') - fs electerm-electerm-66f193d/build/bin/upload-file-to-r2.js :1
const fs = require('fs') - fs electerm-electerm-66f193d/build/npm/install.js :15
const fs = require('fs') - fs electerm-electerm-66f193d/build/npm/utils.js :10
const fs = require('fs') - fs electerm-electerm-66f193d/build/vite/common.js :2
import { readFileSync } from 'fs' - fs electerm-electerm-66f193d/build/vite/dev-server.js :7
import fs from 'fs' - fs electerm-electerm-66f193d/src/app/common/app-props.js :21
require('fs').existsSync( - fs electerm-electerm-66f193d/src/app/lib/fs.js :1
const fss = require('fs/promises') - fs electerm-electerm-66f193d/src/app/lib/nedb.js :7
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/lib/npm.js :2
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/lib/single-instance.js :7
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/lib/sqlite.js :8
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/lib/storage-key.js :5
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/lib/system-ca.js :9
const { existsSync, readdirSync, readFileSync } = require('fs') - fs electerm-electerm-66f193d/src/app/migrate/index.js :10
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/migrate/migrate-1-to-2.js :6
const { existsSync, renameSync } = require('fs') - fs electerm-electerm-66f193d/src/app/migrate/v1.3.0.js :11
const { existsSync, unlinkSync, writeFileSync } = require('fs') - fs electerm-electerm-66f193d/src/app/server/child-process.js :8
const { writeFileSync, unlinkSync } = require('fs') - fs electerm-electerm-66f193d/src/app/server/download-upgrade.js :5
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/server/session-log.js :6
const { existsSync, mkdirSync, createWriteStream } = require('fs') - fs electerm-electerm-66f193d/src/app/server/session-ssh.js :525
return require('fs') - fs electerm-electerm-66f193d/src/app/server/ssh-known-hosts.js :2
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/server/trzsz.js :4
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/server/xmodem.js :6
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/server/zmodem.js :25
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/upgrade/index.js :10
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/widgets/load-widget.js :3
const fs = require('fs') - fs electerm-electerm-66f193d/src/app/widgets/widget-rename.js :1
const fs = require('fs').promises - fs electerm-electerm-66f193d/src/app/widgets/widget-ssh-server.js :72
const fs = require('fs') - fs electerm-electerm-66f193d/src/client/common/download.jsx :19
const r = await window.fs.writeFile(filePath, text).catch(window.store.onError) - fs electerm-electerm-66f193d/src/client/common/fs.js :87
window.fs.readdir(p) - fs electerm-electerm-66f193d/src/client/components/batch-op/batch-op-editor.jsx :136
await window.fs.writeFile(tempPath, value) - fs electerm-electerm-66f193d/src/client/components/batch-op/batch-op-runner.jsx :54
const content = await window.fs.readFile(filePath) - fs electerm-electerm-66f193d/src/client/components/bookmark-form/common/ssh-auth-selector.jsx :31
: await window.fs.readFile(file.filePath) - fs electerm-electerm-66f193d/src/client/components/file-transfer/transfer.jsx :487
await window.fs.mkdir(path) - fs electerm-electerm-66f193d/src/client/components/quick-commands/quick-command-transport-mod.jsx :15
: await window.fs.readFile(file.filePath) - fs electerm-electerm-66f193d/src/client/components/setting-panel/keywords-transport.jsx :12
: await window.fs.readFile(file.filePath) - fs electerm-electerm-66f193d/src/client/components/setting-panel/setting-terminal.jsx :144
await window.fs.unlink(testFile) - fs electerm-electerm-66f193d/src/client/components/sftp/code-compare.jsx :182
return window.fs.readFile(p) - fs electerm-electerm-66f193d/src/client/components/sftp/file-item.jsx :434
? window.fs.mkdir - fs electerm-electerm-66f193d/src/client/components/sftp/sftp-entry.jsx :409
? window.fs.unlink - fs electerm-electerm-66f193d/src/client/components/terminal-info/log-path-edit.jsx :28
await fs.unlink(testFile) - fs electerm-electerm-66f193d/src/client/components/terminal/terminal.jsx :988
await window.fs.writeFile(filePath, content).catch(window.store.onError) - fs electerm-electerm-66f193d/src/client/components/theme/theme-form.jsx :170
: await window.fs.readFile(file.filePath) - fs electerm-electerm-66f193d/src/client/components/tree-list/bookmark-upload.js :33
: await window.fs.readFile(file.filePath) - fs electerm-electerm-66f193d/src/client/store/load-data.js :110
conf.privateKey = await window.fs.readFile(options.privateKeyPath) - fs electerm-electerm-66f193d/src/client/store/sync.js :731
: await window.fs.readFile(file.filePath) - fs (weak) electerm-electerm-66f193d/src/test/e2e/020.trzsz-rzsz.spec.js :24
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/e2e/039.drag-folder.spec.js :2
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/e2e/common/ftp.js :3
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/integration/lib/ssh-test-server.js :19
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/integration/mcp.spec.js :20
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh-agent.spec.js :31
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh-known-hosts.spec.js :4
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh-password-first.spec.js :10
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh.spec.js :5
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/session-transports.spec.js :5
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/ssh-proxy-command.spec.js :5
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit-ci/zmodem.spec.js :15
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/custom-require.spec.js :4
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/db-concurrency.spec.js :19
const fs = require('node:fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/db-enc.spec.js :12
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/ftp-transfer.spec.js :5
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/load-widget.spec.js :8
const fs = require('fs/promises') - fs (weak) electerm-electerm-66f193d/src/test/unit/nedb.spec.js :13
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/npm-install2.spec.js :8
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/npm.spec.js :4
const fs = require('fs') - fs (weak) electerm-electerm-66f193d/src/test/unit/rename-widget.spec.js :7
const fs = require('fs/promises') - fs (weak) electerm-electerm-66f193d/src/test/unit/xmodem.spec.js :8
const fs = require('node:fs')
shell / exec 35
- shell electerm-electerm-66f193d/build/bin/app.js :8
exec(cmd) - shell electerm-electerm-66f193d/build/bin/appimage-integration.js :89
require('child_process').execSync( - shell electerm-electerm-66f193d/build/bin/build-common.js :5
const { exec } = require('child_process') - shell electerm-electerm-66f193d/build/bin/build.js :12
// exec('npm run clean') - shell electerm-electerm-66f193d/build/bin/post-install.js :15
exec('npm cache clear -f') - shell electerm-electerm-66f193d/build/bin/prepare.js :31
// exec(`PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D -E playwright@1.28.1 --no-save && npm i -D -E @playwright/test@1.28.1 --no-save`) - shell electerm-electerm-66f193d/build/bin/publish-electerm-react.js :18
exec('npm-publish --access public --provenance') - shell electerm-electerm-66f193d/build/bin/start.js :6
exec('npm start') - shell electerm-electerm-66f193d/build/bin/vite-build.js :7
exec('npm run build') - shell electerm-electerm-66f193d/build/npm/install.js :14
const { execFile } = require('child_process') - shell electerm-electerm-66f193d/build/vite/dev-server.js :9
import { spawn } from 'child_process' - shell electerm-electerm-66f193d/src/app/lib/fs.js :8
const { exec, spawn } = require('child_process') - shell electerm-electerm-66f193d/src/app/lib/menu.js :260
require('child_process').exec(`"${process.execPath}" --new-window`) - shell electerm-electerm-66f193d/src/app/lib/open-file-with-editor.js :1
const { spawn } = require('child_process') - shell electerm-electerm-66f193d/src/app/lib/system-ca.js :8
const { execSync } = require('child_process') - shell electerm-electerm-66f193d/src/app/server/child-process.js :6
const { fork } = require('child_process') - shell electerm-electerm-66f193d/src/app/server/session-process.js :1
const { fork } = require('child_process') - shell electerm-electerm-66f193d/src/app/server/session-ssh.js :10
const { exec } = require('child_process') - shell electerm-electerm-66f193d/src/app/server/ssh-proxy-command.js :18
const { spawn } = require('child_process') - shell electerm-electerm-66f193d/src/app/widgets/widget-ssh-server.js :3
const { exec } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/e2e/005.ai-config.spec.js :7
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/e2e/006.ai-chat.spec.js :7
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/e2e/006.ai-explain.spec.js :7
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/e2e/038.ai-create-bookmark.spec.js :12
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/integration/lib/ssh-test-server.js :18
const { exec } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/integration/session-ssh-hopping.spec.js :20
const { execSync } = require('node:child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit-ci/mcp-exec.spec.js :30
exec (cmd, opts, cb) { - shell (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh-agent.spec.js :35
const { spawnSync } = require('node:child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh-password-first.spec.js :14
const { spawnSync } = require('node:child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit-ci/session-ssh.spec.js :9
const { spawnSync } = require('node:child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit/ftp-transfer.spec.js :3
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit/ftp.spec.js :3
const { spawn } = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit/npm-install2.spec.js :517
// install.js does NOT call exec('electerm') - shell (weak) electerm-electerm-66f193d/src/test/unit/open-file-with-editor.spec.js :4
const childProcess = require('child_process') - shell (weak) electerm-electerm-66f193d/src/test/unit/open-file.spec.js :4
const childProcess = require('child_process')
network 36
- net electerm-electerm-66f193d/build/npm/utils.js :8
const https = require('https') - net electerm-electerm-66f193d/src/app/lib/ai.js :1
const axios = require('axios') - net electerm-electerm-66f193d/src/app/lib/auth.js :47
const axios = require('axios') - net electerm-electerm-66f193d/src/app/lib/npm.js :4
const axios = require('axios') - net electerm-electerm-66f193d/src/app/lib/single-instance.js :6
const net = require('net') - net electerm-electerm-66f193d/src/app/server/dispatch-center.js :86
fetch(ws, msg) - net electerm-electerm-66f193d/src/app/server/download-upgrade.js :8
const rp = require('axios') - net electerm-electerm-66f193d/src/app/server/fetch.js :7
function fetch (options) { - net electerm-electerm-66f193d/src/app/server/rdp-proxy.js :1
const net = require('net') - net electerm-electerm-66f193d/src/app/server/session-rdp.js :69
const net = require('net') - net electerm-electerm-66f193d/src/app/server/session-spice.js :56
const net = require('net') - net electerm-electerm-66f193d/src/app/server/session-ssh.js :9
const net = require('net') - net electerm-electerm-66f193d/src/app/server/session-vnc.js :7
const net = require('net') - net electerm-electerm-66f193d/src/app/server/socks.js :5
const { request } = require('http') - net electerm-electerm-66f193d/src/app/server/spice-proxy.js :1
const net = require('net') - net electerm-electerm-66f193d/src/app/server/ssh-proxy-command.js :19
const net = require('net') - net electerm-electerm-66f193d/src/app/server/ssh-tunnel.js :33
const server = require('net').connect(sshTunnelLocalPort, sshTunnelLocalHost) - net electerm-electerm-66f193d/src/app/server/sync.js :6
const rp = require('axios') - net electerm-electerm-66f193d/src/app/server/telnet.js :4
const { Socket } = require('net') - net electerm-electerm-66f193d/src/app/server/webdav-sync.js :6
const rp = require('axios') - net electerm-electerm-66f193d/src/client/common/fetch.jsx :62
return window.fetch(url, body) - net electerm-electerm-66f193d/src/client/common/fs.js :10
return fetch({ - net (weak) electerm-electerm-66f193d/src/client/common/test-connection.js :8
return fetch({ - net electerm-electerm-66f193d/src/client/common/update-check.js :21
return fetch(data) - net electerm-electerm-66f193d/src/client/components/sftp/file-item.jsx :930
const res = await window.api.fetch(url) - net electerm-electerm-66f193d/src/client/components/sftp/sftp-entry.jsx :973
await window.api.fetch('/api/upload', { - net electerm-electerm-66f193d/src/client/components/terminal/terminal-apis.js :8
return fetch({ - net electerm-electerm-66f193d/src/client/store/sync.js :104
return fetch(data) - net (weak) electerm-electerm-66f193d/src/test/integration/mcp.spec.js :18
const axios = require('axios') - net (weak) electerm-electerm-66f193d/src/test/integration/session-ssh-hopping.spec.js :23
const net = require('node:net') - net (weak) electerm-electerm-66f193d/src/test/unit-ci/mcp-exec.spec.js :132
const axios = require('axios') - net (weak) electerm-electerm-66f193d/src/test/unit-ci/mcp-tasks.spec.js :157
const axios = require('axios') - net (weak) electerm-electerm-66f193d/src/test/unit-ci/session-transports.spec.js :8
const net = require('node:net') - net (weak) electerm-electerm-66f193d/src/test/unit-ci/ssh-proxy-command.spec.js :79
const net = require('net') - net (weak) electerm-electerm-66f193d/src/test/unit/load-widget.spec.js :9
const axios = require('axios') - net (weak) electerm-electerm-66f193d/src/test/unit/npm-install.spec.js :9
const https = require('https')
secrets 2
- secrets electerm-electerm-66f193d/build/bin/build-common.js :198
const secretAccessKey = process.env.CF_R2_SECRET_ACCESS_KEY - secrets electerm-electerm-66f193d/build/bin/upload-file-to-r2.js :19
const secretAccessKey = process.env.CF_R2_SECRET_ACCESS_KEY
tool registrations 40
- list_electerm_tabs electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :356
- get_electerm_active_tab electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :368
- switch_electerm_tab electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :380
- close_electerm_tab electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :394
- reload_electerm_tab electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :408
- duplicate_electerm_tab electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :423
- open_electerm_local_terminal electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :437
- send_electerm_terminal_command electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :449
- get_electerm_terminal_selection electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :472
- get_electerm_terminal_output electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :487
- wait_for_electerm_terminal_idle electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :504
- get_electerm_terminal_status electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :531
- cancel_electerm_terminal_command electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :547
- execute_electerm_command electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :563
- open_electerm_tab_ssh electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :643
- open_electerm_tab_telnet electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :658
- open_electerm_tab_serial electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :673
- open_electerm_tab_local electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :688
- list_electerm_bookmarks electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :705
- get_electerm_bookmark electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :722
- add_electerm_bookmark_ssh electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :736
- add_electerm_bookmark_telnet electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :751
- add_electerm_bookmark_serial electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :766
- add_electerm_bookmark_local electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :781
- edit_electerm_bookmark electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :796
- delete_electerm_bookmark electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :811
- open_electerm_bookmark electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :825
- list_electerm_bookmark_groups electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :842
- add_electerm_bookmark_group electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :854
- electerm_sftp_list electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :872
- electerm_sftp_stat electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :887
- electerm_sftp_read_file electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :902
- electerm_sftp_del_file_or_folder electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :917
- electerm_sftp_upload electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :932
- electerm_sftp_download electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :949
- electerm_zmodem_upload electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :966
- electerm_zmodem_download electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :982
- electerm_sftp_transfer_list electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :999
- electerm_sftp_transfer_history electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :1011
- get_electerm_settings electerm-electerm-66f193d/src/app/widgets/widget-mcp-server.js :1026
install hooks 1
- postinstall electerm-electerm-66f193d/package.json :19
node build/bin/post-install
declared dependencies 76
- @electerm/electerm-locales@^2.3.12
- @electerm/electerm-themes@^1.0.1
- @electerm/ftp-srv@1.0.5
- @electerm/nedb@2.0.0
- @electerm/ssh2@1.22.0
- @xterm/headless@6.1.0-beta.292
- axios@1.18.1
- basic-ftp@6.0.1
- commander@12.1.0
- diffie-hellman@^5.0.3
- electerm-sync@2.0.1
- electron-log@4.3.5
- express@5.2.1
- express-ws@5.0.2
- fast-deep-equal@3.1.3
- find-free-port@2.0.0
- font-list@1.5.1
- https-proxy-agent@7.0.1
- iconv-lite@^0.7.2
- json-deep-copy@1.3.1
- jsonwebtoken@^9.0.1
- nanoid@3.3.8
- node-bash@5.0.1
- node-forge@1.4.0
- node-pty@1.2.0-beta.15
- os-locale-s@1.1.3
- serialport@13.0.0
- socks@2.8.9
- socks-proxy-agent@8.0.1
- socksv5-server@^1.0.2
- ssh-config-loader@1.1.2
- ssh2-scp@3.2.1
- tar@7.5.21
- trzsz2@1.2.0
- zmodem2@1.4.0
- @ant-design/icons@6.2.5
- @electerm/electerm-resource@2.2.1
- @fontsource/maple-mono@^5.2.5
- @novnc/novnc@1.7.0
- @types/node@22.9.3
- @vitejs/plugin-react@^5.2.0
- @xterm/addon-attach@0.13.0-beta.292
- @xterm/addon-fit@0.12.0-beta.292
- @xterm/addon-image@0.10.0-beta.292
- @xterm/addon-ligatures@0.11.0-beta.292
- @xterm/addon-search@0.17.0-beta.292
- @xterm/addon-unicode11@0.10.0-beta.292
- @xterm/addon-web-links@0.13.0-beta.292
- @xterm/addon-webgl@0.20.0-beta.291
- @xterm/xterm@6.1.0-beta.292
- antd@6.5.1
- classnames@2.5.1
- cross-env@7.0.3
- dotenv@16.4.5
- electerm-icons@1.0.1
- electron@42.8.1
- electron-builder@26.15.7
- filesize@10.1.6
- filesize-parser@1.5.1
- glob@^13.0.6
- ironrdp-wasm@1.1.0
- lodash-es@^4.17.21
- manate@2.0.3
- morgan@1.11.0
- multer@^2.2.0
- pug@3.0.4
- react@19.2.7
- react-diff-viewer-continued@4.4.0
- react-dom@19.2.7
- react-markdown@9.0.1
- replace-in-file@6.3.5
- shelljs@0.8.5
- spice-client@1.2.0
- standard@^17.1.2
- stylus@^0.64.0
- vite@8.1.0