mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
81d1b4602d
* feat: add auto-update support via electron-updater (#289) - Add autoUpdateBridge.cjs wrapping electron-updater for check/download/install - Register bridge in main.cjs, expose IPC in preload.cjs - Add auto-update methods to NetcattyBridge type in global.d.ts - Extend updateService.ts with electron-updater bridge functions - Add Software Update section in Settings > System tab with state machine UI - Add i18n keys for update UI (en + zh-CN) - Add publish config for GitHub Releases in electron-builder.config.cjs - Update CI workflow to upload update metadata (*.yml, *.blockmap, *.zip) - Fallback to manual GitHub download for unsupported platforms or errors * fix: address Codex review - guard bridge call and pin sender window - Guard optional bridge call in SettingsSystemTab to prevent TypeError when getAppInfo is unavailable (e.g. browser/dev/test rendering) - Capture senderWindow at download initiation in autoUpdateBridge so progress/downloaded/error events always go to the requesting renderer, even if focus changes during download * fix: use semver ordering for version check and clean up listeners on rejection - Replace strict equality (===) with localeCompare for version comparison to avoid false positives on pre-release/nightly builds - Clean up download-progress/update-downloaded/error listeners in the catch path when downloadUpdate() rejects before emitting events * feat: redirect update toast to Settings window for in-app update - Update toast notification now opens Settings window instead of GitHub Releases page, enabling the in-app download/install flow - Add 'update.viewInSettings' i18n key (en + zh-CN) - Remove unused openReleasePage from App.tsx destructuring - Move useWindowControls() before the update effect to fix declaration order
92 lines
4.0 KiB
JSON
Executable File
92 lines
4.0 KiB
JSON
Executable File
{
|
|
"name": "netcatty",
|
|
"description": "Netcatty is a modern SSH manager and terminal app with host grouping, SFTP, keychain, port forwarding, and a rich UI.",
|
|
"homepage": "https://github.com/binaricat/Netcatty",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"author": "binaricat <support@netcatty.com>",
|
|
"license": "GPL-3.0-or-later",
|
|
"main": "electron/main.cjs",
|
|
"scripts": {
|
|
"dev": "npm run lint && concurrently -k \"vite\" \"npm:dev:electron\"",
|
|
"dev:electron": "wait-on http-get://localhost:5173 && cross-env VITE_DEV_SERVER_URL=http://localhost:5173 node electron/launch.cjs",
|
|
"prebuild": "node scripts/copy-monaco.cjs",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"start": "node electron/launch.cjs",
|
|
"pack": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --publish=never",
|
|
"pack:dir": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --dir --publish=never",
|
|
"pack:win": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --publish=never",
|
|
"pack:mac": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --mac --publish=never",
|
|
"pack:linux": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --publish=never",
|
|
"pack:linux-x64": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --x64 --publish=never",
|
|
"pack:linux-arm64": "npm run build && cross-env NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --arm64 --publish=never",
|
|
"postinstall": "electron-builder install-app-deps && patch-package",
|
|
"rebuild": "electron-builder install-app-deps",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.956.0",
|
|
"@fontsource/jetbrains-mono": "^5.2.8",
|
|
"@fontsource/space-grotesk": "^5.2.10",
|
|
"@google/genai": "1.33.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@radix-ui/react-collapsible": "1.1.12",
|
|
"@radix-ui/react-context-menu": "2.2.16",
|
|
"@radix-ui/react-dialog": "1.1.15",
|
|
"@radix-ui/react-hover-card": "^1.1.15",
|
|
"@radix-ui/react-popover": "1.1.15",
|
|
"@radix-ui/react-scroll-area": "1.2.10",
|
|
"@radix-ui/react-select": "2.2.6",
|
|
"@radix-ui/react-slot": "1.2.4",
|
|
"@radix-ui/react-tabs": "1.1.13",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@xterm/addon-fit": "^0.10.0",
|
|
"@xterm/addon-search": "^0.15.0",
|
|
"@xterm/addon-serialize": "^0.13.0",
|
|
"@xterm/addon-web-links": "^0.11.0",
|
|
"@xterm/addon-webgl": "^0.18.0",
|
|
"@xterm/xterm": "^5.5.0",
|
|
"clsx": "2.1.1",
|
|
"electron-updater": "^6.8.3",
|
|
"iconv-lite": "^0.6.3",
|
|
"lucide-react": "0.560.0",
|
|
"monaco-editor": "^0.55.1",
|
|
"node-pty": "1.1.0-beta19",
|
|
"react": "^19.2.1",
|
|
"react-dom": "^19.2.1",
|
|
"serialport": "^13.0.0",
|
|
"ssh2-sftp-client": "^12.0.1",
|
|
"tailwind-merge": "3.4.0",
|
|
"uuid": "^13.0.0",
|
|
"webdav": "^5.8.0"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.1",
|
|
"@tailwindcss/postcss": "^4.1.17",
|
|
"@tailwindcss/vite": "^4.1.17",
|
|
"@types/node": "^25.0.0",
|
|
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
|
"@typescript-eslint/parser": "^8.49.0",
|
|
"@vitejs/plugin-react": "^5.1.2",
|
|
"concurrently": "^9.2.1",
|
|
"cross-env": "^10.1.0",
|
|
"electron": "^40.1.0",
|
|
"electron-builder": "^26.0.12",
|
|
"eslint": "^9.39.1",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"eslint-plugin-unused-imports": "^4.3.0",
|
|
"patch-package": "^8.0.0",
|
|
"tailwindcss": "^4.1.17",
|
|
"typescript": "~5.9.3",
|
|
"vite": "^7.2.7",
|
|
"wait-on": "^9.0.3"
|
|
},
|
|
"overrides": {
|
|
"cpu-features": "npm:empty-npm-package@1.0.0",
|
|
"axios": "1.13.5"
|
|
}
|
|
}
|