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 # 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}