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.
84 lines
2.9 KiB
YAML
84 lines
2.9 KiB
YAML
appId: dev.ylhan.nexusterm
|
|
productName: NexusTerm
|
|
copyright: Copyright © 2026 ylhan
|
|
|
|
directories:
|
|
output: release
|
|
buildResources: build
|
|
|
|
files:
|
|
- out/**/*
|
|
- package.json
|
|
|
|
# Ship only this platform's native prebuilds.
|
|
#
|
|
# better-sqlite3 alone carries eight, and node-pty another eleven — for other
|
|
# operating systems, other architectures, and musl. None of them can be
|
|
# loaded here and together they are about 10MB of the package.
|
|
# better-sqlite3 ships these as flat FILES (`win32-arm64.node`), not as
|
|
# directories, so the pattern must not require a trailing `/**`.
|
|
- '!node_modules/better-sqlite3/prebuilds/win32-*'
|
|
- '!node_modules/better-sqlite3/prebuilds/darwin-*'
|
|
- '!node_modules/better-sqlite3/prebuilds/linuxmusl-*'
|
|
- '!node_modules/better-sqlite3/prebuilds/linux-arm64*'
|
|
- '!node_modules/node-pty/prebuilds/win32-*/**'
|
|
- '!node_modules/node-pty/prebuilds/darwin-*/**'
|
|
- '!node_modules/ssh2/lib/protocol/crypto/build/Release/obj/**'
|
|
|
|
# Native modules cannot be loaded from inside an asar archive.
|
|
#
|
|
# Unpack the WHOLE package, not just `**/*.node`. node-pty ships `spawn-helper`
|
|
# on macOS and Windows, a real executable loaded from disk rather than dlopen'd
|
|
# — if it stays inside the archive, the app works in dev and fails only once
|
|
# packaged, which is the worst way for it to fail. ssh2 turned out to carry
|
|
# `sshcrypto.node` as well, which is easy to miss because the library reads as
|
|
# pure JavaScript.
|
|
asarUnpack:
|
|
- node_modules/node-pty/**
|
|
- node_modules/better-sqlite3/**
|
|
- node_modules/ssh2/**
|
|
- node_modules/@serialport/**
|
|
|
|
# Deliberately off. These are all node-addon-api builds, so the binaries
|
|
# produced by `npm install` load unchanged in Electron's Node — verified by
|
|
# spawning a real PTY from inside Electron 44. Rebuilding would take time and
|
|
# risk replacing working binaries with differently-built ones, for no gain.
|
|
npmRebuild: false
|
|
|
|
linux:
|
|
target:
|
|
- AppImage
|
|
- deb
|
|
category: Network
|
|
maintainer: ylhan <ylhan@example.com>
|
|
# Without this, desktop environments cannot tell which running window
|
|
# belongs to this .desktop entry, so the launcher shows a second icon
|
|
# instead of indicating the running app.
|
|
syncDesktopName: true
|
|
synopsis: SSH session manager
|
|
description: >
|
|
SSH session manager with a connection tree, tabbed terminals grouped by
|
|
host, port forwarding, a pinned local shell, and credentials held by the
|
|
system keyring.
|
|
# electron-builder generates the .desktop entry from these.
|
|
desktop:
|
|
entry:
|
|
Name: NexusTerm
|
|
Comment: SSH session manager
|
|
Keywords: ssh;terminal;shell;sftp;remote;
|
|
|
|
deb:
|
|
depends:
|
|
- libgtk-3-0
|
|
- libnotify4
|
|
- libnss3
|
|
- libxss1
|
|
- libxtst6
|
|
- xdg-utils
|
|
- libatspi2.0-0
|
|
- libsecret-1-0
|
|
# node-pty needs a working /dev/pts, which every normal desktop has.
|
|
- libuuid1
|
|
|
|
artifactName: ${productName}-${version}-${arch}.${ext}
|