mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
bd8476fb34
fontLigatures already defaulted to on, but the terminal never loaded the ligatures addon, so Fira Code and Maple Mono kept drawing != as two cells. Activate the addon after open and before WebGL, and rebuild the WebGL atlas when the setting changes so glyphs are not rasterized without the calt feature. The addon bundles lru-cache's node:diagnostics_channel import. Alias that builtin to a no-op channel in the Vite renderer build and in the Electron live-test bundles. Closes #3543
193 lines
11 KiB
JSON
193 lines
11 KiB
JSON
{
|
|
"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",
|
|
"workspaces": [
|
|
"packages/*",
|
|
"examples/plugins/*"
|
|
],
|
|
"author": "binaricat <support@netcatty.com>",
|
|
"license": "GPL-3.0-or-later",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"main": "electron/main.cjs",
|
|
"bin": {
|
|
"netcatty-tool-cli": "./electron/cli/netcatty-tool-cli.cjs"
|
|
},
|
|
"scripts": {
|
|
"dev": "npm run fetch:mosh:dev && npm run fetch:et:dev && npm run lint && concurrently -k \"vite --strictPort\" \"npm:dev:electron\"",
|
|
"dev:electron": "wait-on http-get://localhost:5173 && cross-env VITE_DEV_SERVER_URL=http://localhost:5173 node electron/launch.cjs",
|
|
"clean:vite": "node scripts/clean-vite-cache.cjs",
|
|
"dev:clean": "npm run clean:vite && npm run dev",
|
|
"prebuild": "node scripts/copy-monaco.cjs",
|
|
"fetch:mosh": "node scripts/fetch-mosh-binaries.cjs",
|
|
"fetch:mosh:dev": "node scripts/fetch-mosh-binaries.cjs --host --resolve-release",
|
|
"fetch:et": "node scripts/fetch-et-binaries.cjs",
|
|
"fetch:et:dev": "node scripts/fetch-et-binaries.cjs --host --resolve-release",
|
|
"build:windows-hello-helper": "node scripts/build-windows-hello-helper.cjs",
|
|
"build": "npm run build:plugin-packages && vite build",
|
|
"build:plugin-runtime-deps": "npm run build --workspace @netcatty/plugin-contract && npm run build --workspace @netcatty/plugin-sdk && npm run build --workspace @netcatty/plugin-cli",
|
|
"build:plugin-packages": "npm run generate:plugin-contract && npm run build:plugin-runtime-deps && npm run build --workspace @netcatty/example-hello-plugin",
|
|
"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 npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --x64 --publish=never && cross-env npm_config_arch=arm64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --arm64 --publish=never",
|
|
"pack:win-x64": "npm run build && cross-env npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --win --x64 --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 npm_config_arch=x64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --x64 --publish=never",
|
|
"pack:linux-arm64": "npm run build && cross-env npm_config_arch=arm64 NODE_OPTIONS=--disable-warning=DEP0190 electron-builder --config electron-builder.config.cjs --linux --arm64 --publish=never",
|
|
"postinstall": "patch-package && node scripts/patch-xterm-macos-column-selection.cjs && node scripts/patch-xterm-foreground-intense.cjs && electron-builder install-app-deps && node scripts/rebuildPatchedNodePty.cjs && node scripts/patch-xterm-webgl-atlas.cjs",
|
|
"rebuild": "electron-builder install-app-deps",
|
|
"tool:cli": "node electron/cli/netcatty-tool-cli.cjs",
|
|
"generate:capability-tools": "node scripts/generate-capability-tools.cjs",
|
|
"generate:codex-app-server-schema": "node scripts/generate-codex-app-server-schema.cjs",
|
|
"check:codex-app-server-schema": "node scripts/generate-codex-app-server-schema.cjs --check",
|
|
"check:codebuddy-sdk-contract": "tsc -p tsconfig.codebuddy-sdk-contract.json",
|
|
"generate:plugin-contract": "node scripts/generate-plugin-contract.mjs",
|
|
"check:plugin-contract": "node scripts/generate-plugin-contract.mjs --check",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"pretest": "npm run build:plugin-runtime-deps && npm run check:codebuddy-sdk-contract",
|
|
"test": "node --test --import tsx electron/*.test.cjs electron/preload/*.test.cjs electron/mcp/*.test.cjs electron/scripts/*.test.cjs electron/terminalWorker/*.test.cjs electron/capabilities/*.test.cjs electron/capabilities/*/*.test.cjs electron/capabilities/*/*/*.test.cjs electron/cli/*.test.cjs electron/bridges/*.test.cjs electron/bridges/*/*.test.cjs electron/bridges/aiBridge/codexAppServer/*.test.cjs electron/bridges/aiBridge/sdk/*.test.cjs scripts/*.test.cjs application/*.test.ts application/app/*.test.ts application/i18n/locales/*.test.ts application/state/*.test.ts application/state/*/*.test.ts components/*.test.ts components/*.test.tsx components/editor/*.test.ts components/editor/*.test.tsx components/notes/*.test.ts components/notes/*.test.tsx components/port-forwarding/*.test.ts components/scripts/*.test.tsx components/systemManager/*.test.ts components/terminalLayer/*.test.ts components/settings/*.test.tsx components/settings/tabs/*.test.ts components/settings/tabs/ai/*.test.ts components/settings/tabs/ai/*.test.tsx components/ai/*.test.ts components/ai/*.test.tsx components/ai/toolArtifacts/*.test.ts components/ai/toolArtifacts/*.test.tsx components/ai-elements/*.test.tsx components/sftp/*.test.ts components/terminal/*.test.ts components/terminal/*.test.tsx components/terminal/runtime/*.test.ts components/vault/*.test.ts components/vault/*.test.tsx domain/*.test.ts domain/*/*.test.ts infrastructure/ai/*.test.ts infrastructure/ai/*/*.test.ts infrastructure/ai/sdk/*.test.ts infrastructure/config/*.test.ts infrastructure/monaco/*.test.ts infrastructure/persistence/*.test.ts infrastructure/services/*.test.ts infrastructure/services/*/*.test.ts lib/*.test.ts packages/*/src/*.test.ts",
|
|
"test:plugin-contract": "node --test --import tsx packages/*/src/*.test.ts",
|
|
"pretest:plugin-runtime": "npm run build:plugin-runtime-deps",
|
|
"test:plugin-runtime": "node --test electron/plugins/*.test.cjs",
|
|
"pretest:plugin-runtime:electron": "npm run build:plugin-runtime-deps",
|
|
"test:plugin-runtime:electron": "electron electron/plugins/electronRuntime.live.test.cjs",
|
|
"test:sync-crdt": "node --test --import tsx domain/convergentSync/*.test.ts",
|
|
"bench:sync-crdt": "tsx scripts/bench-sync-crdt.ts",
|
|
"test:ssh-mfa-models": "node --test electron/bridges/sshMfaModels.live.test.cjs",
|
|
"test:ssh-mfa-models:live": "SSH_MFA_LIVE=1 node --test electron/bridges/sshMfaModels.live.test.cjs",
|
|
"test:local-file-drag:electron": "electron scripts/local-file-drag.live.test.cjs",
|
|
"test:tray-panel-layout": "electron scripts/tray-panel-layout.live.test.cjs",
|
|
"test:xterm-foreground-intense": "electron scripts/xterm-foreground-intense.live.test.cjs",
|
|
"test:terminal-background-rendering": "electron scripts/terminal-background-rendering.live.test.cjs",
|
|
"test:xterm-webgl-overflow": "electron scripts/xterm-webgl-atlas-overflow.live.test.cjs",
|
|
"test:xterm-macos-selection": "electron scripts/xterm-macos-column-selection.live.test.cjs",
|
|
"test:xterm-keyword-highlight-performance": "electron scripts/xterm-keyword-highlight-performance.live.test.cjs",
|
|
"test:xterm-keyword-highlight-throughput": "electron scripts/xterm-keyword-highlight-throughput.live.test.cjs"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/anthropic": "^4.0.0",
|
|
"@ai-sdk/google": "^4.0.0",
|
|
"@ai-sdk/openai": "^4.0.0",
|
|
"@aws-sdk/client-s3": "^3.956.0",
|
|
"@eslint-community/regexpp": "4.12.2",
|
|
"@fontsource/jetbrains-mono": "^5.2.8",
|
|
"@fontsource/mona-sans": "^5.2.8",
|
|
"@fontsource/space-grotesk": "^5.2.10",
|
|
"@mdxeditor/editor": "^4.0.4",
|
|
"@mimo-ai/sdk": "^0.1.15",
|
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@netcatty/plugin-cli": "0.1.0-internal",
|
|
"@netcatty/plugin-contract": "0.1.0-internal",
|
|
"@netcatty/plugin-sdk": "0.1.0-internal",
|
|
"@noble/hashes": "^2.2.0",
|
|
"@openai/codex-sdk": "0.144.3",
|
|
"@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-tabs": "1.1.13",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@smithy/node-http-handler": "^4.4.9",
|
|
"@streamdown/cjk": "^1.0.2",
|
|
"@streamdown/code": "^1.1.0",
|
|
"@tanstack/react-virtual": "^3.14.8",
|
|
"@withfig/autocomplete": "^2.692.3",
|
|
"@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-serialize": "0.15.0-beta.292",
|
|
"@xterm/addon-unicode-graphemes": "0.5.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",
|
|
"ai": "^7.0.2",
|
|
"ajv": "8.18.0",
|
|
"ajv-formats": "3.0.1",
|
|
"clsx": "2.1.1",
|
|
"electron-updater": "^6.8.3",
|
|
"http-proxy-agent": "^7.0.2",
|
|
"https-proxy-agent": "^7.0.6",
|
|
"iconv-lite": "^0.6.3",
|
|
"katex": "^0.18.4",
|
|
"lucide-react": "0.560.0",
|
|
"mdast-util-from-markdown": "^2.0.3",
|
|
"mdast-util-gfm-strikethrough": "^2.0.0",
|
|
"mdast-util-to-string": "^4.0.0",
|
|
"micromark-extension-gfm-strikethrough": "^2.1.0",
|
|
"monaco-editor": "^0.55.1",
|
|
"node-pty": "1.1.0",
|
|
"pinyin-pro": "^3.28.1",
|
|
"re2js": "2.8.6",
|
|
"react": "^19.2.1",
|
|
"react-dom": "^19.2.1",
|
|
"serialport": "^13.0.0",
|
|
"socks-proxy-agent": "^8.0.5",
|
|
"ssh2-sftp-client": "^12.0.1",
|
|
"streamdown": "^2.4.0",
|
|
"tailwind-merge": "3.4.0",
|
|
"turndown": "^7.2.4",
|
|
"turndown-plugin-gfm": "^1.0.2",
|
|
"use-stick-to-bottom": "^1.1.3",
|
|
"webdav": "^5.8.0",
|
|
"zmodem.js": "^0.1.10",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.1",
|
|
"@tailwindcss/vite": "^4.1.17",
|
|
"@types/node": "^25.0.0",
|
|
"@types/react-test-renderer": "^19.1.0",
|
|
"@types/turndown": "^5.0.6",
|
|
"@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": "^42.3.3",
|
|
"electron-builder": "^26.15.2",
|
|
"esbuild": "0.27.2",
|
|
"eslint": "^9.39.1",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"eslint-plugin-unused-imports": "^4.3.0",
|
|
"fast-check": "^4.9.0",
|
|
"jsdom": "^29.1.1",
|
|
"patch-package": "^8.0.0",
|
|
"react-test-renderer": "^19.2.4",
|
|
"sass": "^1.103.1",
|
|
"simple-icons": "^16.23.0",
|
|
"tailwindcss": "^4.1.17",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "~5.9.3",
|
|
"vite": "^7.3.2",
|
|
"wait-on": "^9.0.3"
|
|
},
|
|
"optionalDependencies": {
|
|
"@anthropic-ai/claude-agent-sdk": "^0.3.161",
|
|
"@cursor/sdk": "^1.0.18",
|
|
"@github/copilot-sdk": "1.0.0",
|
|
"@opencode-ai/sdk": "^1.17.9",
|
|
"@tencent-ai/agent-sdk": "^0.3.258",
|
|
"@vscode/windows-process-tree": "^0.7.0"
|
|
},
|
|
"overrides": {
|
|
"cpu-features": "npm:empty-npm-package@1.0.0",
|
|
"axios": "1.13.5",
|
|
"node-abi": "4.31.0",
|
|
"@electron/asar": "4.2.0"
|
|
}
|
|
}
|